Reactjs Redux是否自动更新其连接的React组件?
我的印象是,当我的Redux存储得到更新时(通过向reducer发送操作),我的提供者应该让新存储对它的所有子组件都可用。因此,当我使用mapStateToProps()将容器组件连接到存储时,该组件在接收到随存储一起更新的新道具时应该重新渲染,而不需要componentWillReceiveProps()。我这样想是不是错了 在阅读了几个小时的文档和其他堆栈溢出的答案后,我觉得有些东西不对劲。我非常确定我的reducer工作正常,正在返回一个新对象,我的组件可以访问存储,我的初始状态是渲染良好。如果有人能给我一个更好的关于事物流动的想法,我将永远感激 基本上,我有一个头部组件,用于导入存储、使用提供者并呈现“FAQ”组件:Reactjs Redux是否自动更新其连接的React组件?,reactjs,redux,components,store,reducers,Reactjs,Redux,Components,Store,Reducers,我的印象是,当我的Redux存储得到更新时(通过向reducer发送操作),我的提供者应该让新存储对它的所有子组件都可用。因此,当我使用mapStateToProps()将容器组件连接到存储时,该组件在接收到随存储一起更新的新道具时应该重新渲染,而不需要componentWillReceiveProps()。我这样想是不是错了 在阅读了几个小时的文档和其他堆栈溢出的答案后,我觉得有些东西不对劲。我非常确定我的reducer工作正常,正在返回一个新对象,我的组件可以访问存储,我的初始状态是渲染良好
import React from 'react';
import FAQ from './Faq';
import {Provider} from "react-redux";
import store from '../store/index'
class Header extends React.Component {
render() {
return (
<Provider store = {store}>
<FAQ />
</Provider>
)
}
}
export default Header;
下面是我的根减速机和combineReducers()函数:
import { combineReducers } from "redux";
import faq from './faqReducer'
export default combineReducers({
faq: faq
});
问题是,您正在将数据从道具复制到状态,但仅在安装组件时才这样做,然后期望在新道具到达时以某种方式更新状态 。请不要那样做。只需使用道具的价值 关于改进该准则的另外两项建议:
- 更喜欢使用,而不是将其作为函数编写
- 我们建议使用我们的新官员作为编写Redux逻辑的标准方式。它包括简化几个常见Redux用例的实用程序,包括存储设置、定义缩减器、不可变更新逻辑,甚至一次创建整个状态“切片”
connect
作为道具传入,也可以通过useSelector
像const counter=useSelector(state=>state.counter)
那样从存储中读取。
const initialState = {
breakfast: ["eggs", "bacon"]
}
export default function faqReducer(state = initialState, action) {
switch (action.type) {
case "ADD_FOOD":
return Object.assign({}, state, {
breakfast: [...state.breakfast, action.food]
})
default:
return state;
}
}
import { combineReducers } from "redux";
import faq from './faqReducer'
export default combineReducers({
faq: faq
});