在React hook useState的set参数中运行函数是否有任何不利之处?

时间:2019-12-06 18:07:26

标签: javascript reactjs react-hooks

当我不得不使用当前值进行进一步处理并且无法依靠依赖项来及时更新功能时,我遇到了这样的情况。我不得不做类似以下的事情。

const [values, setValues] = useState({});
const someCallback = useCallback(() => {
  setValues((values) => {
    if(values.x === 'something') return ({ ...values, x: 'something else' });
    return values;
  });
}, []);

它对我有用,但这并不意味着它是对的。我从未见过有人像上面那样使用它,但是我看不到上面有什么问题。像这样使用useState的set参数有什么缺点吗?

1 个答案:

答案 0 :(得分:4)

我没有发现任何问题。您已经声明不存在任何依赖关系,这是正确的,因为您使用的是#include <stdio.h> #include <lualib.h> #include <lauxlib.h> int main() { lua_State* L = luaL_newstate(); luaL_openlibs(L); luaL_dofile(L, "myclass.lua"); // instantiate lua_getglobal(L,"myclass"); lua_getfield(L, -1, "new"); lua_getglobal(L, "myclass"); lua_pcall(L,1,1,0); lua_setglobal(L, "objname"); // init lua_getglobal(L,"myclass"); lua_getfield(L, -1, "init"); lua_getglobal(L,"objname"); lua_pcall(L, 1, 0, 0); // perform lua_getglobal(L, "myclass"); lua_getfield(L, -1, "perform"); lua_getglobal(L, "objname"); lua_pcall(L, 1, 1, 0); double res = lua_tonumber(L, -1); printf("Result: %f\n", res); lua_close(L); return 0; } 的回调版本(并且setValues本身被保证是稳定的)。

我可能要做的一件次要事情,更像是一种风格的事情,并且可以通过两种方式争论:我可能会为setValues参数使用不同的名称values回调,为清楚起见:

setValues

但是,再次,你看起来还不错。