Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/439.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 Redux';连接';未检测到状态数组更改_Javascript_Reactjs_Redux_State_Immutability - Fatal编程技术网

Javascript Redux';连接';未检测到状态数组更改

Javascript Redux';连接';未检测到状态数组更改,javascript,reactjs,redux,state,immutability,Javascript,Reactjs,Redux,State,Immutability,我已经用一个reducer设置了redux,它可以更新给定日期的一组时隙。每次我更改日期时,reducer都会更新状态(我已将状态更改记录在控制台中,这与我的mapStateToProps函数中预期的情况相同),但是,redux connect函数没有检测到时隙数组已更新。这是我的减速机: import { SHOW_ERROR, HIDE_ERROR, SHOW_SUCCESS, HIDE_SUCCESS, UPDATE_TIME_SLOTS } from '../actions/types'

我已经用一个reducer设置了redux,它可以更新给定日期的一组时隙。每次我更改日期时,reducer都会更新状态(我已将状态更改记录在控制台中,这与我的mapStateToProps函数中预期的情况相同),但是,redux connect函数没有检测到时隙数组已更新。这是我的减速机:

import { SHOW_ERROR, HIDE_ERROR, SHOW_SUCCESS, HIDE_SUCCESS, UPDATE_TIME_SLOTS } from '../actions/types';

const INITIAL_STATE = { error: null, success: null, timeSlots: null };

export default function (state = INITIAL_STATE, action) {
  switch (action.type) {
    case SHOW_ERROR:
      return { ...state, error: action.payload };
    case HIDE_ERROR:
      return { ...state, error: action.payload };
    case SHOW_SUCCESS:
      return { ...state, success: action.payload };
    case HIDE_SUCCESS:
      return { ...state, success: action.payload };
    case UPDATE_TIME_SLOTS:
      return { ...state, timeSlots: action.payload };
    default:
      break;
  }
  return state;
}
时隙始终是如下所示的阵列:

["08:30", "09:15", "10:00", "10:45", "11:30", "12:15", "13:00", "13:45", "14:30", "15:15", "16:00", "16:45"]
这是我的MapStateTops函数,然后使用redux connect将这些道具发送到我的BookingForm(这是my console.log正确检测状态变化的地方:

function mapStateToProps(state) {
  console.log(state.public.timeSlots);
  return {
    timeSlots: state.public.timeSlots
  };
}

export default connect(mapStateToProps, { create, getAvailableSlots })(form(BookingForm));
每次单击表单中的日期时,状态都会用新数组更新,但是,我的connect函数没有检测到此更新,因此BookingForm组件不会重新呈现。我假设这是因为数组没有被永久更新,但是,我还没有找到一个解决方案来设计它,使其不被永久更新平淡地


有什么帮助吗?

您可能正在发送相同的数组实例,并且
connect
函数仅检查引用更改!顺便说一句:对象也是如此

使用相同的数组将不会被
连接检测到,您必须在每次更新状态时创建一个新数组

让减速机来处理怎么样? 因此,一旦用户单击表单上的某个日期,发送一个操作来记录该日期,比如说“date_CLICKED”操作,然后在reducer中,将该日期与所有以前的值一起添加到一个新的数组中

像这样:

  return [...state.dates, action.date]

您可能正在发送相同的数组实例,并且
connect
函数仅检查引用更改!顺便说一句:对象也是如此

使用相同的数组将不会被
连接检测到,您必须在每次更新状态时创建一个新数组

让减速机来处理怎么样? 因此,一旦用户单击表单上的某个日期,发送一个操作来记录该日期,比如说“date_CLICKED”操作,然后在reducer中,将该日期与所有以前的值一起添加到一个新的数组中

像这样:

  return [...state.dates, action.date]

从我的头顶上看,你是否从“react redux”导入了{connect}
?你是否像预期的那样工作?
mapDispatchToProps
?嗨,是的,一切正常(导入都正确),唯一的问题是connect在数组更新时没有检测到。从我头顶上看,你是否
import{connect}从“react redux”
?您的
mapDispatchToProps
是否按预期工作?您好,是的,一切都按预期工作(导入都正确),唯一的问题是connect在数组更新时未检测到。是否有使用所有以前的值返回新数组的示例?我对redux和设计还原器相对较新。是否有链接阅读更多有关哪些类型已检查引用,哪些类型未检查引用的信息?是否有使用所有t返回新数组的示例以前的值?我对redux和设计减速机相对较新。您是否有链接阅读更多关于哪些类型是参考检查的,哪些不是?