Javascript React检测多个文件中的变量更改

Javascript React检测多个文件中的变量更改,javascript,reactjs,redux,pass-by-reference,self-modifying,Javascript,Reactjs,Redux,Pass By Reference,Self Modifying,我的reducer(Redux)代码中有一个全局变量,它是包含数据的对象数组 我经常使用connect from React Redux在多个文件(查看文件)之间传递该变量,如下所示: function mapStateToProps(state) { const { appointments } = state.Appointment; return { appointments }; } export default connect(mapState

我的reducer(Redux)代码中有一个全局变量,它是包含数据的对象数组

我经常使用connect from React Redux在多个文件(查看文件)之间传递该变量,如下所示:

function mapStateToProps(state) {
    const { appointments } = state.Appointment;
    return {
        appointments
    };
}

export default connect(mapStateToProps, {
    /* Some methods */
})(Appointment);
当我想要修改该数组的特定元素时,我会传递该元素的引用,这样以后就不必处理替换。问题是有人(视图)正在修改该引用,并且它正在将其从对象更改为数字类型。它们是像PropTypes(在reducer文件中)这样的简单方法来检测谁正在将数组位置的引用从一个对象更改为一个数字吗


谢谢

我不确定我是否明白你的意思。你是说一个组件在容器中而不是在缩减器本身中变异数组项(通过引用我得到它)吗?是的,元素在变异。数组位于作为propsyes接收的reducer文件中。但这不是“重复”的做事方式。容器不应直接改变存储值。仅限减速器(通过动作)。这就是它的目的。这样一来,就有一个单一的数据来源可供观察。一旦你改正了。更新道具绝对不是做事的反应方式。根据定义,道具是只读的。我认为你需要重新评估你的方法。如果您想更改数据,可以使用state并根据需要对其进行操作,也可以在reducer中使用mapStateToProps/selector或OK将其传递给组件,因此我设法按照您的建议,将我的props pass从reducer映射到使用setState更新的状态变量。我在Reducer文件而不是action文件中执行任何逻辑是否重要?它们都有不同的用途。Reducer的任务是设置该流的状态,这意味着它处理更新存储。动作文件的任务是执行动作并将组件与减速器连接起来。他们都做不同的事情。减速机不应该携带很多逻辑,而是处理状态的设置。这样想,您执行了一些操作,之后您希望更新您的状态以保持状态更改。如果您不想进行状态更改,那么您可以使用“本地”状态并使用setState