javascript - 如何让自定义钩子(Hook)响应状态变化?

标签 javascript reactjs typescript

我有一个处理特定状态变量的自定义 Hook 。

每当您更改状态时,它都不会立即更新,因此我必须使用 useEffect 订阅它。

但是,在 useEffect 中调用自定义钩子(Hook)是绝对不可能的。

如何让自定义 Hook 使用状态变量执行任何操作?

最佳答案

您不能(不应该)在 useEffect 内部调用自定义 Hook ,但您可以在自定义 Hook 内部使用 useEffect:

const useMyHook = function( someState ){
    useEffect( function(){
        // do what the hook should do
    }, [ someState ]);
};

如果当其他内容发生变化时 Hook 也应该更新,您也可以传递它:

const useMyHook = function( someState, someDependency ){
    useEffect( function(){
        // do what the hook should do
    }, [ someState, someDependency ]);
};

我建议对依赖项使用数组,这样它的工作方式类似于useEffect:

const useMyHook = function( label, dependencies ){

    const [ value, setValue ] = useState(0);

    useEffect( function(){
        setValue( value + 1 );
    }, [ label, ...dependencies ]);

    return label + ': ' + value;
};

// ...

const value = useMyHook('counter', [ dependentValue, otherDependentValue ]);

关于javascript - 如何让自定义钩子(Hook)响应状态变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66021371/

相关文章:

javascript - 如何选择不包含某个子元素的元素?

javascript - 如何在reactjs中对数据进行排序并显示?

javascript - 如何验证 ng-form 是否被触摸

javascript - Onresize 事件未在调整大小时运行

javascript - Django 和 ajax 错误

javascript - 无法读取未定义的属性 'userNameInput'

javascript - Webpack 抛出 JSX 语法错误

javascript - React - 如何返回 HTML 字符串

javascript - RxJs:顺序发送请求并不是真正顺序的

javascript - 无法使用 Angular 从 Assets 文件夹中检索 json 数据