2 回答

TA貢獻1788條經驗 獲得超4個贊
如果您要創(chuàng)建自定義掛鉤,則可以在其中調用其他掛鉤。所以你可以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鉤子創(chuàng)建一個組件來在內部處理狀態(tài):
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 功能道具創(chuàng)建一個全新的可重用組件。
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;
一般來說,我更喜歡創(chuàng)建一個包含一些功能的新組件,而不是只重用函數。
添加回答
舉報