【问题标题】:Can the default value of a Recoil atom be an object?Recoil atom 的默认值可以是对象吗?
【发布时间】:2021-02-01 00:11:07
【问题描述】:

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

例如:

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());

【问题讨论】:

    标签: javascript reactjs recoiljs


    【解决方案1】:

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

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

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

    工作演示

    【讨论】:

      【解决方案2】:

      是的,这是允许的。 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()
      });
      

      【讨论】:

      • 如何将先前的用户状态与扩展运算符合并并用新值更改部分属性?如何使用 setState 更改选择器中的状态?
      猜你喜欢
      • 1970-01-01
      • 2016-08-15
      • 2013-06-11
      • 2018-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-02
      相关资源
      最近更新 更多