zustand 的属性 怎么配合 类 一起使用

在 Zustand 中,通常建议将状态存储为简单的 JavaScript 对象,而不是类的实例。这是因为 Zustand 是基于 React 的上下文和 Hooks API 设计的,它最适合处理简单的、可序列化的状态。然而,如果确实需要将类的实例与 Zustand 结合使用,可以只存储类的关键属性,并在需要时创建一个新的类实例。

import create from 'zustand';  
  
class Person {  
  constructor(name, age) {  
    this.name = name;  
    this.age = age;  
  }  
  
  greet() {  
    return `Hello, my name is ${this.name} and I'm ${this.age} years old.`;  
  }  
}  
  
const useStore = create((set, get) => ({  
  name: 'John Doe',  
  age: 30,  
  setName: (name) => set({ name }),  
  setAge: (age) => set({ age }),  
  getPerson: () => new Person(get().name, get().age),  
}));  
  
function MyComponent() {  
  const { setName, setAge, getPerson } = useStore();  
  
  const handleNameChange = (event) => {  
    setName(event.target.value);  
  };  
  
  const handleAgeChange = (event) => {  
    setAge(parseInt(event.target.value, 10));  
  };  
  
  const person = getPerson();  
  
  return (  
    <div>  
      <p>{person.greet()}</p>  
      <input type="text" value={person.name} onChange={handleNameChange} placeholder="Enter name" />  
      <input type="number" value={person.age} onChange={handleAgeChange} placeholder="Enter age" />  
    </div>  
  );  
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值