当我不得不使用当前值进行进一步处理并且无法依靠依赖项来及时更新功能时,我遇到了这样的情况。我不得不做类似以下的事情。
const [values, setValues] = useState({});
const someCallback = useCallback(() => {
setValues((values) => {
if(values.x === 'something') return ({ ...values, x: 'something else' });
return values;
});
}, []);
它对我有用,但这并不意味着它是对的。我从未见过有人像上面那样使用它,但是我看不到上面有什么问题。像这样使用useState的set参数有什么缺点吗?
答案 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
但是,再次,你看起来还不错。