У меня есть компонент, связанный с моим магазином.
Этот компонент отправляет действие и корректно изменяет состояние ( см. Журналы ).
Но мой компонент должен отображать это изменение состояния. Но это не рендеринг.
Вот мой код:
Мой магазин Redux, редуктор и Action выглядит так:
//store.js
import { createStore, applyMiddleware } from 'redux';
import thunk from 'redux-thunk'
import { logger } from 'redux-logger'
import reducer from "./src/reducers/index"
const middleware=applyMiddleware(thunk, logger)
export default store = createStore(reducer, middleware);
//reducers/index.js
const initialState = {
isLoggedIn:false,
}
export default loginReducer=(state = initialState, action) => {
switch (action.type) {
case "LOGGED_IN":
return { ...state, isLoggedIn:true };
default:
return state
}
};
//actions.js
export const logIn = (token) => ({
type: "LOGGED_IN",
payload: token
})
Приложение My React Native упаковано так:
import { AppRegistry } from 'react-native';
import App from './src/App';
import React from 'react';
import { Provider } from 'react-redux';
import store from './store'
/**
* Wrap App in Redux Provider
*/
const MainApp = () => (
<Provider store={store}>
<App />
</Provider>
)
AppRegistry.registerComponent('SalesforcegoesmobleReactNative', () => MainApp);
И, наконец, мой Компонент, который я ожидаю обновить состояние и перерисовать после изменения состояния:
import React, { Component } from 'react';
import { View, Text, Button } from 'react-native';
import { connect } from "react-redux"
import { logIn } from '../actions/actions';
@connect(
(state) => {
return {
isLoggedIn: state.isLoggedIn
}
},
(dispatch) => {
return {
updateLogin: id => dispatch(logIn(id))
}
}
)
export class InvoiceList extends Component {
render() {
console.log("rendering...")
return (
<View>
<Button title="Update Login" onPress={() => this.props.updateLogin("test")} />
<Text>{this.props.isLoggedIn ? "true" : "false"}</Text>
</View>
);
}
}
Так что, как вы видите, состояние изменяется правильно.
Но после этого я ожидаю, что компонент снова будет визуализироваться («рендеринг ...» в консоли и в текстовых тегах будет показывать true вместо false)
Я не вижу ошибки. Можете ли вы помочь мне, пожалуйста?