栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何同步Redux状态和URL哈希标签参数

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何同步Redux状态和URL哈希标签参数

我认为您不需要。
(很抱歉,您的回答不屑一顾,但这是我的经验中最好的解决方案。)

存储是数据真实性的来源。这可以。
如果您使用React Router,请使其成为URL状态的真实来源。
您不必将所有物品都保留在商店中。

例如,考虑您的用例:

因为url参数仅包含讲座和所选章节的内容。在商店中,我有一个讲座和章节列表,其中包含名称,子句和选定的布尔值。

问题是您正在复制数据。存储(

chapter.selected
)中的数据在React
Router状态下被复制。一种解决方案是同步它们,但这很快变得很复杂。为什么不让React Router成为某些章节的真实来源呢?

然后,您的商店状态如下所示(简化):

{  // Might be paginated, kept inside a "book", etc:  visibleChapterSlugs: ['intro', 'wow', 'ending'],  // A simple ID dictionary:  chaptersBySlug: {    'intro': {      slug: 'intro',      title: 'Introduction'    },    'wow': {      slug: 'wow',      title: 'All the things'    },    'ending': {      slug: 'ending',      title: 'The End!'    }  }}

而已!不要

selected
在那里存放。相反,让React Router处理它。在路由处理程序中,编写类似

function ChapterList({ chapters }) {  return (    <div>      {chapters.map(chapter => <Chapter chapter={chapter} key={chapter.slug} />)}    </div>  )}const mapStateToProps = (state, ownProps) => {  // Use props injected by React Router:  const selectedSlugs = ownProps.params.selectedSlugs.split(';')  // Use both state and this information to generate final props:  const chapters = state.visibleChapterSlugs.map(slug => {    return Object.assign({      isSelected: selectedSlugs.indexOf(slug) > -1,    }, state.chaptersBySlug[slug])  })  return { chapters }}export default connect(mapStateToProps)(ChapterList)


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/383464.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号