Javascript Redux不重新呈现组件
redux状态更改时,我的一个组件无法正确渲染。我相信这与国家的突变有关,但我似乎无法解决它。状态确实正确更改,并且所有数据都正确填充,但它只是不重新渲染组件。当我将它连接到组件的本地状态并在那里设置状态时,它工作正常。下面是我创建的减速器。我遇到的问题是公司的成功案例Javascript Redux不重新呈现组件,javascript,reactjs,react-native,redux,react-redux,Javascript,Reactjs,React Native,Redux,React Redux,redux状态更改时,我的一个组件无法正确渲染。我相信这与国家的突变有关,但我似乎无法解决它。状态确实正确更改,并且所有数据都正确填充,但它只是不重新渲染组件。当我将它连接到组件的本地状态并在那里设置状态时,它工作正常。下面是我创建的减速器。我遇到的问题是公司的成功案例 const companyReducer = (state = initalState, action) => { console.log("Company State: ", state); switch (action
const companyReducer = (state = initalState, action) => {
console.log("Company State: ", state);
switch (action.type) {
case COMPANY_REQUEST:
return {
...state,
isFetching: true
};
case COMPANY_SUCCESS:
return {
...state,
isFetching: false,
companies: {
...state.companies,
[action.companyID]: {
companyInfo: action.companyInfo,
services: action.companyInfo.services,
socialMedia: action.companyInfo.socialMedia,
companyImages: action.companyInfo.companyImages,
companyHours: action.companyInfo.companyHours,
about: action.companyInfo.about
}
}
};
case COMPANY_FAILURE:
return {
...state,
isFetching: false,
error: action.error
};
const initalState = {
isFetching: false,
error: null,
companies: {}
};
function mapStateToProps(state) {
return {
companyReducer: state.companyReducer
};
}
我想你的减速器对象没有改变。对象(和数组)是JavaScript中的引用。可以在不更改引用的情况下更改对象。如果引用未更改,则React认为新值与旧值相同,并且不会重新渲染。同样,当您再次返回
时
不会重新渲染,当您再次返回
时组件
也不会重新渲染。您的stateObject
可能已经更改了它的一些键值对,但是state对象本身仍然指向内存中的同一位置
您应该将状态中的某个值(而不是整个状态)作为属性返回给组件。即使是像返回状态.companyReducer
这样简单的东西,例如正在获取、公司、和错误也会触发重新渲染,因为当您使用扩展操作符更改对象时,您的公司对象在内存中会获得一个新位置
返回{…state,etc}
意味着状态成为内存中新生成的对象,但这更多是redux处理返回对象的内部结构,因此,我不能确定它是否保留了新生成的对象,而不是对象。分配它。
。您应该包括initialState
和mapstatetops
函数。您还可以发布触发状态更改的组件吗?你的减速机看起来不错。