5

我可以将 Recoil 原子的默认值设置为对象吗?

例如:

export const currentUserState = atom({
  key: 'currentUserState',
  default: { name: '', email: '', userId: null },
});

然后将其设置为:

import { currentUserState } from '../atoms/atoms';

const setUserState = useSetRecoilState(currentUserState);
setUserState(name: 'John', email: 'foo@bar.com', userId: getRand());
4

2 回答 2

3

是的,这是允许的。Recoil atom state 可以是一个对象。您已经正确初始化了原子,但是当您设置原子时,您必须传递一个对象,因为状态是对象。

初始化currentUserState原子

export const currentUserState = atom({
  key: 'currentUserState',
  default: {name: '', email: '', userId: null}
});

然后设置原子状态如下

import {currentUserState} from '../recoilstate/atoms';

const setUserState = useSetRecoilState(currentUserState);

setUserState({
  name: 'John', 
  email: 'foo@bar.com', 
  userId: getRand()
});
于 2021-04-17T08:21:16.330 回答
1

是的,Recoil 原子可以是一个对象。

我已经编写了这段代码,你可以在下面的工作演示中看到它。

 const changeValue = () => {
    setUserState({ name: "John", email: "foo@bar.com", userId: Math.random() });
  };

工作演示

代码沙盒

于 2020-10-18T12:35:59.363 回答