【发布时间】:2020-05-02 10:53:59
【问题描述】:
我是 React 的新手,在使用 hook 时遇到了问题。 我将构建一个基本表单作为子组件,但我想知道为什么在更改其值时不呈现子表单上的输入元素。
这是我的代码。
'use strict';
function SearchForm({form, handleSearchFormChange}) {
return (
<div className="card border-0 bg-transparent">
<div className="card-body p-0 pt-1">
<div className="form-row">
<div className="col-auto">
<label className="mr-1" htmlFor="number">Number:</label>
<input type="text" className="form-control form-control-sm w-auto d-inline-block"
name="number" id="number" value={form.number} onChange={handleSearchFormChange}/>
</div>
</div>
</div>
</div>
);
}
function App() {
const formDefault = {
number: 'Initial Value'
};
const [form, setForm] = React.useState(formDefault);
const handleSearchFormChange = (e) => {
setForm(Object.assign(form, {[e.target.name]: e.target.value}));
console.log('Handle Search Form Change', e.target.name, "=", e.target.value);
};
return (
<React.Fragment>
<div>Number : {form.number}</div>
<SearchForm form={form} handleSearchFormChange={handleSearchFormChange} />
</React.Fragment>
);
}
const domContainer = document.querySelector('#root');
ReactDOM.render((
<React.Fragment>
<App/>
</React.Fragment>
), domContainer);
我在父组件中为“number”元素定义了一个 onChange 事件处理程序,并尝试使用 props 将值传递给子组件。
问题是当我要更改“数字”时,“数字”输入元素根本没有改变。 (根本没有渲染)。因此该输入元素始终具有“初始值”。 您能就此提出建议吗?
我想知道这种方法是否合理。
提前致谢。
【问题讨论】:
标签: javascript reactjs react-hooks