Хотите использовать redux для обновления stae, а не использовать useState

В настоящее время я пытаюсь изучить Redux, но у меня возникают проблемы с управлением состоянием с помощью Redux. Прямо сейчас я могу использовать useState для управления состоянием, и оно работает, но не могу понять это с помощью Redux. Прямо сейчас мое приложение просто пытается получить текст, введенный в поле ввода, и при нажатии кнопки оно добавит его в состояние плоского списка.

import { connect } from 'react-redux';
import {View,Text,Button,TextInput,FlatList,ScrollView,} from 'react-native';
import { useState } from 'react';
import { Add_Item } from '../redux/actions/index';

const mapStateToProps = (state) => {
  return { tasks: state.reducer.tasks };
};
const mapDispatchToProps = { Add_Item };
function App({ tasks, Add_Item }) {
const [add, setAdd] = useState('');
return (
<ScrollView>
  <View style = {{paddingTop: 20}}>
    <View style = {{ border: '2px solid green', margin: 10 }}>
      <TextInput
        placeholder = "Enter Value Here"
        onChangeText = {(add) => setAdd(add)}
      />
    </View>
    <View
      style = {{
        padding: 3,
        border: '2px solid green',
        backgroundColor: 'green',
        'border-radius': 15,
        margin: 10,
      }}>
      <Button
        title = "Add Values to Flatlist"
        onPress = {() => Add_Item(add)}
        color = "green"
      />
    </View>

    <FlatList
      data = {tasks}
      renderItem = {({ item }) => (
        <View>
          <Text
            style = {{
              borderBottomColor: 'grey',
              borderBottomWidth: 1,
              padding: 5,
            }}>
            {item.title}
          </Text>
        </View>
      )}
    />
  </View>
</ScrollView>
);
}

export default connect(mapStateToProps, mapDispatchToProps)(App);

мой файл textreducer:

import { ADD_ITEM } from '../actionType/index';

var initialState = {
tasks: [],
};
export default function (state = initialState, action) {
 if (action.type == ADD_ITEM) {
  return {...state, 
  tasks: [...state.tasks,{title:action.payload.title}]}
 }

 return state;
}

файл моего магазина:

import { configureStore } from "@reduxjs/toolkit";
import reducer from "../reducers/index";
export default configureStore({reducer});

Мой app.js:

import React, { useState } from 'react';
import { View } from 'react-native';
import {Provider} from 'react-redux';
import store from './redux/store/index';
import AddApp from './FlatListApp/index'
export default function App() {
  return (
   <Provider store = {store}>
    <AddApp/>
   </Provider>
  );
}

не тратьте время на изучение Redux. Сами команды Redux рекомендуют изучить «инструментарий Redux» или «rtk».

Normal 19.02.2023 18:47

Какова ваша текущая проблема? Код выглядит примерно правильно для меня. Ваш редуктор вызывается? Вы не указали ни свой магазин, ни провайдера магазина

Adam 19.02.2023 18:52

в настоящее время я использую состояние использования в тексте on, но я предпочитаю использовать свой редукс для изменения состояния

Avi 19.02.2023 20:32
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
3
59
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

проблема в том, что вы используете сам Add_Item как в mapDispatchToProps, так и в приложении, вы должны переименовать Add_Item в mapDispatchToProps, а затем использовать его в приложении:

import { connect } from 'react-redux';
import {View,Text,Button,TextInput,FlatList,ScrollView,} from 'react-native';
import { useState } from 'react';
import { Add_Item } from '../redux/actions/index';

const mapStateToProps = (state) => {
  return { tasks: state.reducer.tasks };
};
const mapDispatchToProps = {addItemAction: Add_Item };
function App({ tasks, addItemAction }) {
const [add, setAdd] = useState('');
return (
<ScrollView>
  <View style = {{paddingTop: 20}}>
    <View style = {{ border: '2px solid green', margin: 10 }}>
      <TextInput
        placeholder = "Enter Value Here"
        onChangeText = {(add) => setAdd(add)}
      />
    </View>
    <View
      style = {{
        padding: 3,
        border: '2px solid green',
        backgroundColor: 'green',
        'border-radius': 15,
        margin: 10,
      }}>
      <Button
        title = "Add Values to Flatlist"
        onPress = {() => addItemAction(add)}
        color = "green"
      />
    </View>

    <FlatList
      data = {tasks}
      renderItem = {({ item }) => (
        <View>
          <Text
            style = {{
              borderBottomColor: 'grey',
              borderBottomWidth: 1,
              padding: 5,
            }}>
            {item.title}
          </Text>
        </View>
      )}
    />
  </View>
</ScrollView>
);
}

export default connect(mapStateToProps, mapDispatchToProps)(App);

но я рекомендую вам использовать хуки вместо подключения, и команда Redux рекомендует использовать инструментарий Redux.

Почему вам нужно переименовать реквизит, чтобы он работал? Это также не отвечает на вопрос ОП, который заключался в том, «как сохранить состояние ввода текста в избыточности»

Adam 20.02.2023 02:21

Другие вопросы по теме