Javascript React redux状态更新isn';t反映到相关组件

Javascript React redux状态更新isn';t反映到相关组件,javascript,reactjs,redux,react-redux,Javascript,Reactjs,Redux,React Redux,我有两个react组件,即Dashboard和singleFeature。在Dashboard中,我有一个ionRangleSlider,它从redux状态获取值。我正在仪表板中渲染singleFeature组件。SingleFeature组件创建一个获取网络请求,并使用dispatch方法更新redux状态 位于仪表板内部的IonRangeSloider从由singleFeature组件更新的redux状态获取值。但不管我尝试了什么,它都没有反映出我的想法。但是,我可以看到redux状态正在更

我有两个react组件,即Dashboard和singleFeature。在Dashboard中,我有一个ionRangleSlider,它从redux状态获取值。我正在仪表板中渲染singleFeature组件。SingleFeature组件创建一个获取网络请求,并使用dispatch方法更新redux状态

位于仪表板内部的IonRangeSloider从由singleFeature组件更新的redux状态获取值。但不管我尝试了什么,它都没有反映出我的想法。但是,我可以看到redux状态正在更新,但没有反映在任何组件中

代码:

Dashboard.js

<div id="slider"><IonRangeSlider ref={r => this.ionSlider = r} 
skin={this.state.skin} values={this.state.values} /></div>

<SingleFeature name={this.state.name} id={this.state.id} user={this.state.user} />

componentDidUpdate(prevProps,prevState) {
        if (this.props.dates !== prevProps.dates) {
            console.log(`In update`)
            this.ionSlider.update({ values: this.props.dates })
        }
    }
这两个组件都通过运行这些方法的{connect}通过
react-redux
连接


//fetch from redux store
const FetchFromStore = (state) => {
    return {
        dates: state.dates
    }
}

//update redux store functions
const UpdateStore = (dispatch) => {
    return {
        updateState: (dates) => dispatch(
            {
                type: 'UPDATE_DATES',
                payload: dates
            })
    }
}
和减速器文件

const stateActions = (state = initialState, action) => {
    switch (action.type) {
        case 'UPDATE_DATES':
            state.dates = [...state.dates,...action.payload];
            console.log(state.dates) //which is updating
            return state;
    }
    return state;
}

状态更新后,
组件diddupdate
方法均不起作用。

感谢所有评论。看来我更新状态的方式不对

//redux payload actions
const stateActions = (state = initialState, action) => {
    switch (action.type) {
        case 'UPDATE_DATES':
            // state.dates = [...state.dates,...action.payload];
            let dates_arr = [...state.dates];
            state.dates = [...dates_arr,...action.payload]
            return {...state}
    }
    return state;
}

它工作正常,正在更新所有组件。

如果您可以看到Redux状态正在更改,则罪魁祸首可能是您的组件。您是否尝试过在组件的
componentdiddupdate
中登录?我猜你的
this.props.dates!==prevProps.dates
条件错误。如果可能的话,您可以比较长度,或者可以尝试类似于
JSON.stringify(this.props.dates)!=stringify(prevProps.dates)
Yes。我尝试了在componentdidUpdate方法中进行日志记录。但是它没有给出任何输出。在您的更新中,您将
console.log
放在您的条件中。如果条件错误,您将看不到输出。请尝试将其置于此条件之外。是的。我在
componentdiddupdate
中添加了
console.log(this.props.dates)
,但没有对任何输出进行控制台操作。您的组件也可能未连接到Redux存储。你看过这个吗?
//redux payload actions
const stateActions = (state = initialState, action) => {
    switch (action.type) {
        case 'UPDATE_DATES':
            // state.dates = [...state.dates,...action.payload];
            let dates_arr = [...state.dates];
            state.dates = [...dates_arr,...action.payload]
            return {...state}
    }
    return state;
}