如何使用状态键将对象传递给异化器

时间:2019-04-24 03:08:28

标签: react-native redux

我正在使用React Native构建一个应用程序,并且试图录制音频。我想将一个对象传递给我的动作,然后传递给我的减速器,以更新状态。

在我叫动作的屏幕上:

this.props.recordAudio({ stoppedRecording: true, recording: false, paused: false });

操作:

export const recordAudio = (change) => {
  return {
    type: AUDIO,
    payload: change
  };
};

减速器:

const INITIAL_STATE = {
  audio: {
    recording: false,
    paused: false,
    stoppedRecording: false,
  }
}

case AUDIO:
return {
  ...state,
  audio: {
    ...state.audio,
    [action.payload]
  }
}

我收到一个错误:意外令牌(致命)。我也试过不带括号。

我在音频中还有其他键,通过直接传递键/值而不是对所有键/键进行单独操作,更容易更新所有键。有正确的方法吗?

3 个答案:

答案 0 :(得分:1)

case audio:
return {
      ...state,
  audio: {
      ...state.audio,
    [action.payload]
  }
}

答案 1 :(得分:0)

您应该删除方括号

case AUDIO:
return {
  ...state,
  audio: {
    ...state.audio,
    ...action.payload
  }
}

答案 2 :(得分:0)

您应该传播Object action.payload,如:

 case AUDIO:
        return {
          ...state,
          audio: {
            ...state.audio,
            ...action.payload
          }
        }