微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

react-redux 当前道具值

如何解决react-redux 当前道具值

我在页面上有三个按钮,当单击任何按钮时,我想从由 id 过滤的商店中获取所选值(在减速器中完成)。我正在尝试将 redux 与 mapStatetoProps 和 mapdispatchToProps 模式一起使用,但看起来当我在单击任何按钮后尝试从商店访问当前选定的值时,它没有在控制台中反映正确的值。这不是如何使用“this.props.anyPropValue”吗?你能帮助澄清我的例子中有什么问题吗? 第一次单击任何按钮时打印认值,再次单击将打印先前单击的按钮值而不是当前值。

这是我为上面创建的简单应用程序的沙盒链接

sandbox link of the code

解决方法

您编写的大部分代码都是正确的,如果您希望在调用操作后立即看到更新后的输出,则它不起作用

onGetCountryById(id) {
    this.props.fetchCountryById(id);
    console.log(this.props.country); // This will gives you the current country (We just update the state,but still that value didn't update the component)
}

尝试在 html 中打印国家/地区的值,如下所示,您会看到它正在更新

{this.props.country === null ? "default" : this.props.country.name}

在减速器中,您可能需要进行此更改

case CountryActions.FETCH_COUNTRY_BY_ID:
    return {
        ...state,country: state.countries.find((item) => item.id === action.id) // use find instead of filter
    };

并将country set的初始值设置为null

const initCountriesState = {
    country: null,countries: [
        ....
    ]
};

这是更新的sandbox

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。