Redux - mapStateToProp не получает параметры, а редуктор не читает действие - PullRequest
0 голосов
/ 01 февраля 2020

mapStateToProps не получает состояние от store. ответ console.log:

Object {
  "selectStateClassify": Object {
    "newClassify": "É pra vir algo",
  },
}

, и ему выдается сообщение об ошибке «1006 *», я знаю, что это свойство, но я не знаю, как использовать это свойство как объект. Я хотел бы использовать stateClassify в теге <Text>{stateClassify}</Text>

import { StyleSheet, View, Text, TouchableOpacity } from 'react-native';
import { connect } from 'react-redux';

function Classificacao({ navigation }){

    return(
        <View style={{
            flex: 1,
            paddingTop: 30,
            flexDirection: 'column',
            alignItems: 'center',
        }}
        >
            <Text style={{
                textAlign: 'center',
                paddingHorizontal: 60,
                fontSize: 25,
            }}
            >Com base no Manual de Quadros do AIDPI, o paciente pode apresentar:</Text>

            <Text style={{
                textAlign: 'center',
                paddingHorizontal: 60,
                marginTop: 80,
                fontSize: 25,
                fontWeight: 'bold',

            }}
            >{stateClassify}</Text>
            <TouchableOpacity 
                style={styles.goButton}
                onPress={() => { navigation.navigate('Doencas'); }} 
            >

                <Text style={styles.textButton}>Resultado</Text>
            </TouchableOpacity>
        </View>        
    );

}

const styles = StyleSheet.create({...});

const mapStateToProps = state => {
    console.log(state);
    return{
    stateClassify: state.selectStateClassify.newClassify,
    }
};

export default connect(mapStateToProps)(Classificacao);

Другая проблема, которую я обнаружил, связана с редуктором, я не знаю, что это за проблема, но редуктор не получить параметры действия для изменения состояния, код ниже:

import { SHOW_CLASSIFY } from '../actions/type';

const initialState = {
    newClassify: 'É pra vir algo'
}

export const selectClassify = (state = initialState, action) => {
    switch(action.type){
        case SHOW_CLASSIFY:
            return{
                ...state,
                newClassify: action.newClassify
            };
        default:
            return state;
    }
}

код действия:

import { SHOW_CLASSIFY } from './type';

export const showClassify = (classify) => ({
    type: SHOW_CLASSIFY,
    newClassify: classify
});

код магазина:

import { createStore } from 'redux';
import { Reducers } from '../reducers/index';

export const Store = createStore(Reducers);

приложение. js код:

import React from 'react';
import { StatusBar } from 'react-native';
import { Provider } from 'react-redux';

import Routes from './src/routes';
import { Store } from './src/redux/store/store';

export default function App() {
  return (
    <>
    <Provider store={Store}>
      <StatusBar barStyle="light-content" backgroundColor="#f89747" />
      <Routes />
    </Provider>
    </>
  );
}

Ответы [ 2 ]

1 голос
/ 01 февраля 2020

Добавьте stateClassify к своим деструктурированным реквизитам, чтобы вы могли использовать его таким образом, помните, что вы привязываете реквизиты к своему компоненту, но, поскольку вы деструктурируете реквизиты в параметрах функций, вам также необходимо добавить их.

function Classificacao({ navigation,  stateClassify }){
 ...
}
0 голосов
/ 01 февраля 2020

Код для подключения компонента и действия редуктора выглядит нормально. Файл проверки для глобального хранилища (используется createStore from redux.), В котором мы используем состояние и редукторы для настройки хранения и передачи в компонент Global Parent, чтобы сделать состояние доступным во всем приложении. Также проверьте конфигурацию промежуточного программного обеспечения, чтобы убедиться, что она не является причиной сбоя редукторов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...