Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/479.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Redux不重新呈现组件_Javascript_Reactjs_React Native_Redux_React Redux - Fatal编程技术网

Javascript 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

redux状态更改时,我的一个组件无法正确渲染。我相信这与国家的突变有关,但我似乎无法解决它。状态确实正确更改,并且所有数据都正确填充,但它只是不重新渲染组件。当我将它连接到组件的本地状态并在那里设置状态时,它工作正常。下面是我创建的减速器。我遇到的问题是公司的成功案例

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
函数。您还可以发布触发状态更改的组件吗?你的减速机看起来不错。