改变状态但不重新渲染 react redux

Posted

技术标签:

【中文标题】改变状态但不重新渲染 react redux【英文标题】:Changing state but not rerendering react redux 【发布时间】:2018-12-31 14:11:13 【问题描述】:

我一直在访问 store 来更改状态,我什至可以在控制台中看到更改,但是 ui 没有重新渲染。 Here 是我的代码的存储库(它非常小而且基本)。 为什么我的 ui 没有重新渲染?

https://github.com/shanemmay/test-3

【问题讨论】:

你能把你代码的相关部分贴在这里吗? 您必须将组件连接到商店,以便商店更改触发重新渲染。如果它们未连接,则它们不会在商店更改时重新渲染,因此不会反映新的商店值。 【参考方案1】:

在您的 index.js 中,您需要更改将 store 提供给 App 组件的方式。应该是这样的。

import Provider from 'react-redux'

ReactDOM.render( <Provider store=store>
<App />
</Provider>, document.getElementById('root'));

然后在您的 App.js 中,您需要将状态映射到道具,然后显示该道具的数字。最重要的是,您必须使用 connect 将您的 react 组件连接到 redux 存储。以下是您需要修改 App.js 的方法

 import React,  Component  from 'react';
 import connect from 'react-redux'


 class App extends Component 
   render() 
     return (
       <div>
         <h1>this.props.number</h1>
         <button onClick=
           () =>
           
             this.props.dispatch(type:'+');
           
         > + </button>
       </div>
     );
   
 

 const mapStateToProps = state => (
   number: state
 )

 export default connect(mapStateToProps)(App);

请务必通过https://redux.js.org/basics/usage-with-react 获得更好的了解。

【讨论】:

【参考方案2】:

您的应用需要使用 madhu bhat 所说的提供者与 redux 框架连接。

你必须遵循 redux 架构,基本的了解会非常简单地解决这个问题。

基本流程

访问我的仓库中的同类示例

https://github.com/zural/react-redux-simple-counter/tree/master

这将使您了解 redux 流程和反应状态。

【讨论】:

以上是关于改变状态但不重新渲染 react redux的主要内容,如果未能解决你的问题,请参考以下文章

React/Redux 存储更新但组件未重新渲染

不使用redux返回时React Router重新渲染

React Native - 状态改变但组件没有重新渲染

React Redux reducer 未更新状态

Redux 中的 React ReRender

当状态改变时,React不会重新渲染我的组件