【问题标题】:How to pass an object to a reducer with state key如何使用状态键将对象传递给减速器
【发布时间】:2019-04-24 15:13:26
【问题描述】:

我正在使用 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]
  }
}

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

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

【问题讨论】:

    标签: react-native redux


    【解决方案1】:

    你应该像这样传播 Object action.payload:

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

    【讨论】:

      【解决方案2】:
      case audio:
      return {
            ...state,
        audio: {
            ...state.audio,
          [action.payload]
        }
      }
      

      【讨论】:

        【解决方案3】:

        你应该去掉方括号

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

        【讨论】:

        • 嗯,这就是我的想法,但当我像这样尝试时得到Unexpected token, expected ","
        • @TomBomb:我弄错了,你应该传播action.payload,因为它是一个对象
        猜你喜欢
        • 2017-12-21
        • 2018-07-09
        • 2019-05-11
        • 2019-06-25
        • 2019-10-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-26
        相关资源
        最近更新 更多