2 回答
TA贡献1788条经验 获得超4个赞
如果您要创建自定义挂钩,则可以在其中调用其他挂钩。所以你可以setInput在钩子内检索而不是在那里传递它:
const useCustomHook = (initialValue) => {
const [input, setInput] = useState(initialValue);
// ...
const handleInputChange = e => {
let value = e.target.value;
let name = e.target.name;
let type = e.target.type;
// some other code
setInput(nextState);
};
return handleInputChange;
}
这input将绑定到调用useCustomHook.
编辑:
将@Shota 的回答与此相结合,您可以使用useState钩子创建一个组件来在内部处理状态:
const CustomInput(initialState) => {
const [input, setInput] = useState(initialValue);
const handleInputChange = e => {
// ...
setInput(nextState);
};
return (<input type="text" onChange={handleInputChange} />);
}
要input在外部世界中使用,只需从钩子中返回它:
useCustomHook = () => {
// ...
return {
handleInputChange,
input
}
}
TA贡献1820条经验 获得超10个赞
您可以使用 on change 功能道具创建一个全新的可重用组件。
import React from 'react';
const CommonInput = ({handleChange}) => {
const handleInputChange = e => {
let value = e.target.value;
let name = e.target.name;
let type = e.target.type;
// some other code
setInput(nextState);
handleChange(nextState);
};
return (<input type="text" onChange={handleInputChange} />);
}
export default CommonInput;
我们可以在任何我们想要的地方重用它:
import React from 'react';
const Parent = (props) => (
<CommonInput handleChange={nextStateData => {}}/>
);
export default Parent;
一般来说,我更喜欢创建一个包含一些功能的新组件,而不是只重用函数。
添加回答
举报