小编Sta*_*n_K的帖子

从自定义反应钩子返回函数数组?

我有一个自定义的反应钩子:

    function useItem(id) {

        const [value, setValue] = useState();

        useEffect(() => {
            databaseRead(id).then(i => setValue(i));
        }, [id]);

        function setItem(i) {
            setValue(i);
        }

        function writeItem(i) {
            databaseWrite(id, i);
        }

    return [value, setItem, writeItem];
}
Run Code Online (Sandbox Code Playgroud)

在组件中使用这样的钩子时,每次值更改时返回的 writeItem 函数都会更改(大概是因为我每次都创建一个新数组)。

当我在像这样的 Item 中使用钩子时,如何避免重新呈现 Button 组件?

function Item(props) {
    const [item, setItem, writeItem] = useItem(props.id);
    return(
        <>
            <ItemEditor data={item} setItem={setItem}/>
            <Button onPress={writeItem}/>
        </>
    )
}
Run Code Online (Sandbox Code Playgroud)

我目前的工作但笨拙的方法是从我的钩子中返回一个 useRef 对象而不是数组:

function useItem(id) {
    const retVal = useRef({
       value: value, 
       setItem: setItem, 
       writeItem: writeItem
    }).current;

    const [dirty, setDirty] …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs react-hooks

6
推荐指数
1
解决办法
4662
查看次数

标签 统计

javascript ×1

react-hooks ×1

reactjs ×1