在没有Redux的情况下管理状态

时间:2018-12-06 17:02:41

标签: javascript reactjs redux state

我注意到在不需要的地方使用Redux,例如,我有一个可以加载该帖子的帖子页面,它是评论。

它们仅在该页面上呈现,并且在其他地方不需要,我可以将数据从我的Post容器传递给子道具。

  

现在我想知道当不使用Redux时如何保持干净状态?我目前正在使用2个API调用来加载帖子数据和评论数据,并且Promise.all()等待它们都完成,然后再隐藏加载。

componentDidMount() {
    Promise.all([
        pathService.get(this.props.match.params.slug),
        courseService.get(this.props.match.params.slug)
    ]).then(promises => {
        this.setState({
            loading: false,
            path: promises[0].data,
            courses: promises[1].data
        })
    });
}

这是处理像这样的关系数据的正确方法吗?还有其他选择,还是我应该以任何一种方式查看Redux?

2 个答案:

答案 0 :(得分:3)

我想说,如果您想继续不使用Redux,那么当前的方法很好。

您是否使用Redux在很大程度上取决于您对Redux的熟悉程度以及应用程序的大小。当您说它经常不必要地使用时,您是对的,但有时它可能是有用的工具。

对于此特定组件,如果您在其他与Post组件没有直接父/子关系的组件中使用Promises的结果状态,则Redux可能会有所帮助。您可以想象,将结果状态一直传递到组件树的整个路径,然后再返回到树的另一分支中的另一个组件可能会很麻烦。这是Redux存储出色的时候,因为您可以从存储中检索此状态,而不必将其传递给整个组件树。

奖金:如果您正在寻找其他方法,并且可以使用全新的React功能,请查看React挂钩。它们是处理更复杂问题的好方法 完全不使用Redux的状态! https://reactjs.org/docs/hooks-intro.html

答案 1 :(得分:-1)

此GitHub URL提供您想要的内容: https://github.com/fozg/react-light-state 该库流畅地管理状态,非常容易保存到存储中,享受它!