【发布时间】:2019-07-31 07:43:37
【问题描述】:
给定以下简单组件:
function ValueInput (props) {
const [val, setVal] = useState(props.value);
return <input value={val} onChange={v => setVal(v)}/>;
}
function MyComponent (props) {
const [val, setVal] = useState(props.value);
return (
<div>
<div>{val}</div>
<ValueInput value={val}/>
</div>
);
}
我正在安装它们以便用 Enzyme 和 Jest 测试它们:
const component = mount(<MyComponent value={42}/>);
const inputEl = component.find('input');
如何模拟更改内部输入的值并将其反映在 div 中?我正在尝试使用以下代码,但它不起作用:
console.log(component.debug());
inputEl.simulate('change', { target: { value: 24 } });
// component.update();
console.log(component.debug());
即使强制更新也不会更改值。打印的组件保持不变:
<MyComponent value={42}>
<div>
<div>
42
</div>
<ValueInput value={42}>
<input value={42} onChange={[Function: onChange]} />
</ValueInput>
</div>
</MyComponent>
【问题讨论】: