【发布时间】:2025-12-11 05:25:02
【问题描述】:
警告:您可能有拼写中风
嘿!我有一个非常简单的问题(也许):我应该如何将数据传递给我的组件? 现在我只能看到 2 个解决方案:props(从 App 到我的组件)和 redux(mapStateToProps、mapDispatchToProps)(我们现在跳过 ContextAPI)
案例#1(道具(从应用程序到我的组件))
例如,我的网站上有一个商品清单。然后我的列表必须接收数据来呈现它。我应该通过 App、Main、SomeWrapper、SomeOtherWrapper、GoodsList(例如)传递它,不要犯错误,然后才渲染所有商品。现在,假设我需要将 onCLick 添加到 GoodsItem => 我需要通过所有组件传递 onGoodsItemClick,修复所有测试(因为 PropTypes 会警告)和 PropTypes。这有点复杂,例行公事,技术含量也不高,不是吗?
案例 2(redux(只通过 mapStateToProps、mapDispatchToProps 的需求道具))
好的,我们来看看第二种情况:排序组件。我已经为我的组件编写了连接函数。它们看起来像这样:
const mapStateToProps = (state, ownProps) => ({
...ownProps,
sortType: state.sortType,
allOffers: state.allOffers // allOffers imports only for mapDispatchToProps
});
const mapDispatchToProps = (dispatch) => ({
onSortChange: (allOffers, sortType) => {
dispatch(ActionCreator.changeSortType(sortType));
dispatch(ActionCreator.sortOffers(allOffers, sortType)); // allOffers is using only here
}
});
在这里,我必须接收 allOffers 才能为 mapDispatchToProps 提供排序功能(也许这里有错误。据我所知,ActionCreator 无法访问存储,只能使用 args)。为什么我要接收数据,它甚至不会在页面上呈现?
React 开发人员在这种情况下会做什么?只使用一种方法?在不同的情况下使用两者?将这两种方法与修订相结合?使用第三种方法?
【问题讨论】:
-
“React 开发人员在这种情况下会做什么?” React 开发者使用
redux-toolkit所以他们没有这样的问题 -
@DennisVash 我也使用 react-redux 工具包。没有它,我无法使用 mapStateToProps 和 mapDispatchToProps
-
我不这么认为...您有动作创建者,而不是通过切片创建动作...
-
@hellcaster 我会使用selectors 来获取一组项目。当项目不改变时,排序不改变,页面/过滤器不改变你的选择器不应该重新运行。
标签: javascript reactjs redux react-redux