代码之家  ›  专栏  ›  技术社区  ›  zishe

React Redux同步操作返回一些代理对象而不是字符串

  •  1
  • zishe  · 技术社区  · 8 年前

    我有一个输入 currentAnswer :

        <input
          value={props.currentAnswer}
          onChange={(text) => dispatch(onChangeAnswer(text))}
        />
    

    调用函数的 onChangeAnswer :

    export function onChangeAnswer(text) {
      console.log(text);
      return { type: ON_CHANGE_ANSWER, data: text };
    }
    

    减速器:

    export default function reduce(state = initialState, action) {
      switch (action.type) {
      case ON_CHANGE_ANSWER:
        return assign({}, state, {
          currentAnswer: action.data
        });
    

    异步操作很好,但当我更改输入中的文本时,我会在控制台中看到下一个对象:

    {type: "ON_CHANGE_ANSWER", data: Proxy}
      data: Proxy {dispatchConfig: null, _targetInst: null, …}
      type: "ON_CHANGE_ANSWER"
    

    所以,我想 data 将在字段文本中输入。

    我应该以某种方式发送它吗?我显然不了解这一切是如何运作的。

    2 回复  |  直到 8 年前
        1
  •  2
  •   Tomasz Mularczyk    8 年前

    你得到的代理是React SyntheticEvent 这使得事件在浏览器中的行为相同。您需要从访问值 target 这是原始HTML元素:

    <input
      value={props.currentAnswer}
      onChange={(event) => dispatch(onChangeAnswer(event.target.value))}
    />
    

    顺便说一句- events get nullified for performance reasons -所以您实际上无法传递事件do redux。

        2
  •  1
  •   tommymcdonald    8 年前

    输入的onChange返回一个事件。你要做的是改变路线

    onChange={(text) => dispatch(onChangeAnswer(text))}

    对此:

    onChange={(text) => dispatch(onChangeAnswer(text.target.value))}

    获取您在输入中输入的值。