首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >计算简单不需要输入。

计算简单不需要输入。
EN

Stack Overflow用户
提问于 2022-03-22 22:58:27
回答 1查看 58关注 0票数 0

Redux库easy有一个名为computed的函数,它可以替代标准的Redux选择器:

代码语言:javascript
复制
import { computed } from 'easy-peasy'

const model = {
  session: {
    totalPrice: computed(state => state.price + state.tax)
  }
}

然后在组件中调用选择器,如下所示:

代码语言:javascript
复制
import { useStoreState } from 'easy-peasy'

function TotalPriceOfProducts() {
  const totalPrice = useStoreState(state => state.products.totalPrice)
  return <div>Total: {totalPrice}</div>
}

问题是,似乎没有办法将输入传递给选择器。如果需要处于状态的数组中的特定对象,则不能将对象的ID作为输入传递。我唯一的选择是在组件端这样做。Redux选择器具有函数的优点,因此我可以传递要在选择器逻辑中使用的输入。

有人用过这个问题吗?

EN

回答 1

Stack Overflow用户

发布于 2022-09-30 11:44:49

我不能将对象的ID作为输入传递

要启用这个功能,您必须返回一个函数作为计算属性。

下面是一个示例,公开一个计算函数getTodoById

代码语言:javascript
复制
import { computed } from 'easy-peasy'

const model = {
  todos: [],
  getTodoById: computed(state => {
    // Note how we are returning a function instead of state
    //      
    return (id) => state.todos.find(t => t.id === id)
  })
}

然后你可以像这样使用它:

代码语言:javascript
复制
import { useStoreState } from 'easy-peasy'

function Todo({ id }) {
  const getTodoById = useStoreState(state => state.getTodoById)
  const matchingTodo = getTodoById(id);
  // ... etc
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71579925

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档