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

时间:2018-04-20 14:35:12

标签: reactjs redux react-redux redux-thunk

我有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 个答案:

答案 0 :(得分:2)

您获得的代理是React SyntheticEvent,它使各个浏览器的事件行为相同。您需要访问原始HTML元素target中的值:

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

Btw - events get nullified for performance reasons - 所以你实际上无法传递事件do redux。

答案 1 :(得分:1)

输入的onChange正在返回一个事件。你想要做的是改变行

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

到此:

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

获取您输入的值。