我有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
将在字段文本中输入。
我应该以某种方式发送它吗?我显然不了解这一切是如何运作的。
答案 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))}
获取您输入的值。