reactjs – React-redux组件不会在存储状态更改时重新呈现

我今天说要学习反应和减少,但我无法弄清楚如何在状态改变后迫使组件重新渲染.

这是我的代码:

const store = createStore(loginReducer);
export function logout() { return {type: 'USER_LOGIN'} }
export function logout() { return {type: 'USER_LOGOUT'} }
export function loginReducer(state={isLogged:false},action) {
  switch(action.type) {
    case 'USER_LOGIN':
      return {isLogged:true};
    case 'USER_LOGOUT':
      return {isLogged:false};
    default:


         return state;
      }
    }

    class App extends Component {

      lout(){
        console.log(store.getState()); //IT SHOW INITIAL STATE
        store.dispatch(login());
        console.log(store.getState()); //IT SHOWS THAT STATE DID CHANGE
      }

      ////THIS IS THE PROBLEM,render(){
    console.log('rendering')
    if(store.getState().isLogged){
      return (<MainComponent store={store} />);
    }else{
      return (
        <View style={style.container}>
          <Text onPress={this.lout}>
          THE FOLLOWING NEVER UPDATE :( !!{store.getState().isLogged?'True':'False'}</Text>
          </View>
        );
    }    
}

我可以触发更新的唯一方法是使用

store.subscribe(()=>{this.setState({reload:false})});

在构造函数内部,以便我手动触发组件的更新状态以强制重新呈现.

但我如何链接商店和组件状态?

如果组件的状态或道具已更改,则组件仅重新呈现.您不是依赖于this.state或this.props,而是直接在渲染函数中获取商店的状态.

相反,您应该使用connect将应用程序状态映射到组件props.组件示例:

import React,{ PropTypes } from 'react';
import { connect } from 'react-redux';

export class App extends React.Component {
    constructor(props,context) {
        super(props,context);
    }

    render() {
        return (
            <div>
            {this.props.isLoggedIn ? 'Logged In' : 'Not Logged In'}
            </div>
        );
    }
}

App.propTypes = {
    isLoggedIn: PropTypes.bool.isRequired
};

function mapStateToProps(state,ownProps) {
    return {
        isLoggedIn: state.isLoggedIn
    };
}

export default connect(mapStateToProps)(App);

在这个非常简单的示例中,如果商店的isLoggedIn值发生变化,它将自动更新组件上的相应prop,这将导致它呈现.

我建议您阅读react-redux文档以帮助您入门:
http://redux.js.org/docs/basics/UsageWithReact.html

相关文章

一、前言 在组件方面react和Vue一样的,核心思想玩的就是组件...
前言: 前段时间学习完react后,刚好就接到公司一个react项目...
前言: 最近收到组长通知我们项目组后面新开的项目准备统一技...
react 中的高阶组件主要是对于 hooks 之前的类组件来说的,如...
我们上一节了解了组件的更新机制,但是只是停留在表层上,例...
我们上一节了解了 react 的虚拟 dom 的格式,如何把虚拟 dom...