Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.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 在调度操作和状态更新时不重新呈现组件_Javascript_Reactjs_Redux_React Redux_Web Component - Fatal编程技术网

Javascript 在调度操作和状态更新时不重新呈现组件

Javascript 在调度操作和状态更新时不重新呈现组件,javascript,reactjs,redux,react-redux,web-component,Javascript,Reactjs,Redux,React Redux,Web Component,当我点击我的一个InspectorOption组件时,我的redux记录器显示一个动作被调度,状态按预期更新 我的InspectorSelect和children InspectorOption组件使用react-redux的连接到MapStateTrops,这些组件依赖于来自state的那些道具 但是,即使状态正在更新并且组件依赖于状态,当状态更新时,组件也不会重新渲染 为什么我的组件在状态更改时不重新渲染?如何更正 @connect((state) => { return {

当我点击我的一个InspectorOption组件时,我的redux记录器显示一个动作被调度,状态按预期更新

我的InspectorSelect和children InspectorOption组件使用react-redux的连接到MapStateTrops,这些组件依赖于来自state的那些道具

但是,即使状态正在更新并且组件依赖于状态,当状态更新时,组件也不会重新渲染

为什么我的组件在状态更改时不重新渲染?如何更正

@connect((state) => {
    return {
        options: state.inspector.options
    }
})
export default class InspectorSelect extends Component {
    render() {
        return (
            <div>
                {
                    this.props.options.map(option => {
                        return <InspectorOption 
                            option={ option }
                            key={ option.id }
                        />
                    })
                }
            </div>
        )
    }   
}
@connect((状态)=>{
返回{
选项:state.inspector.options
}
})
导出默认类检查器选择扩展组件{
render(){
返回(
{
this.props.options.map(option=>{
返回
})
}
)
}   
}

正如@markerikson所指出的:99.9%的情况下,这是由于还原剂中Redux状态的意外突变所致

dashboard/src/reducers/inspector.js中存在突变

export default function reducer(state = {
    options: [] 
}, action) {

    switch (action.type){
        case 'SET_INSPECTOR': 
            state.options = state.options.map(option => {   // <-- mutation here
                return option.id === action.payload ?
                    { ...option, active: true } :
                    { ...option, active: false }
            })
            return state // returning mutated state
        default: 
            return state
    }
}

正如@markerikson所指出的:99.9%的情况下,这是由于还原剂中Redux状态的意外突变所致

dashboard/src/reducers/inspector.js中存在突变

export default function reducer(state = {
    options: [] 
}, action) {

    switch (action.type){
        case 'SET_INSPECTOR': 
            state.options = state.options.map(option => {   // <-- mutation here
                return option.id === action.payload ?
                    { ...option, active: true } :
                    { ...option, active: false }
            })
            return state // returning mutated state
        default: 
            return state
    }
}

99.9%的情况下,这是由于reducer(或代码中的其他地方)中Redux状态的意外突变造成的。如前所述,它可能是由状态突变引起的。如果你想发布你的reducer,有人可能会在99.9%的时间里发现错误,那是由于reducer(或代码中的其他地方)中Redux状态的意外突变。如前所述,它可能是由状态突变引起的。如果你想发布你的减速机,有人可能会发现这个错误(好眼力!)是的,那将是一种变异的
状态
。好眼力!:)是的,那是一种变异的
状态