在 react-redux 中从父组件更新子组件的状态

卡维杜·阿洛卡·科迪卡拉

我正在开发一个简单的计数器来react-redux在 React Native 中学习

export default class Counter extends Component {

  state = {
     count: 0
  }

  reducer = (state = this.state, action) => {
     // code
  }

  store = createStore(this.reducer);

  render() {
     return (
        <View style={[Styles.container, { justifyContent: 'center' }]}>
           <Provider store={this.store}>
              <Controller />
           </Provider>
        </View>
     );
  }
}

Controller有2个按钮来改变count在父组件和节目的值count也是如此。这工作正常。我可以增加或减少子组件 ( Controller) 的值,子组件的值也会改变。

但是

假设我在父组件 ( Counter) 中添加了以下代码

state = {
   count: 0
}

componentDidMount () {
   setTimeout(() => this.setState({ count: 10 }), 5000);
}

在这种情况下,一旦Counter5 秒后父组件 ( ) 中的状态值发生变化,它不会将子组件 ( Controller) 中的值更新为 10 它仍然显示 0。无论如何我可以从父组件更新子组件中的值吗?

卡维杜·阿洛卡·科迪卡拉

我只是通过制作一个返回createStore.

redux/store.js

import { createStore } from 'redux';

export default function getStore(reducer) {
   return createStore(reducer);
}

计数器.js

import store from './redux/store'

export default class Counter extends Component {

    state = {
        count: 0
    }

    reducer = (state = this.state, action) => {
        switch (action.type) {
            case actionTypes.INCREASE:
                return { count: ++state.count };

            case actionTypes.DECREASE:
                return { count: --state.count };

            default:
                return state;
        }
    }

    componentDidMount() {
        setTimeout(() => this.setState({ count: 100 }), 2000);
    }

    render() {
        return (
            <View style={[Styles.container, { justifyContent: 'center' }]}>
                <Provider store={store(this.reducer)}>
                    <Controller />
                </Provider>
            </View>
        );
    }
}

而这正是我想要的。现在我可以更新子组件和父组件的值。子组件中的值在两种方式下都发生了完美的变化。但如果有人有其他解决方案,欢迎您在此处发布。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用react挂钩从父组件更新子组件的状态

从React中的子组件更改父状态(无Redux)

子组件的 React-Redux 缩小状态

React - Redux 状态更新但未在组件中呈现

在React中从父组件到子组件共享状态

React + Redux。Connect不会更新组件的状态

react-redux 更新 redux 存储但不更新组件状态

无法从redux接收react组件中的状态

React组件在redux状态更新时不更新

Redux-状态正在更新,但React组件未更新

React / Redux如何通过reducer通过onClick更新组件中的状态,然后在容器中更新它

组件中的 React-Redux 状态与 store 中的状态不同

React Redux组件不更新

React + Redux:组件不更新

React redux 不更新组件

将多个redux子状态连接到React组件

确定可以在使用react-redux时直接更新react组件中的状态吗?

React & Redux:即使使用 mapStateToProps,组件状态也不会更新

React组件不会随着Redux状态的更改而更新

当状态更改为Redux时,React组件未更新

React + Redux-状态更改后组件不会更新

Redux状态更改后,简单的React组件不会更新

未使用 mapStateToProps 将 Redux 状态更新为 React 组件

在redux状态的语言环境更新后重新渲染React组件

使用 Redux 时无法对卸载的组件执行 React 状态更新

React Redux状态更新未反映到相关组件

React js从父组件更改子组件的状态

组件中仅呈现了一部分更新状态(React / Redux)

ReactJs - Redux 状态未在子组件的下拉列表中更新