- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
调查redux todomvc ,仍然对 connect
和 mapStateToProps 感到困惑.
todomvc/src/containers/App.js 部分代码为:
const mapStateToProps = state => ({
todos: state.todos
})
state
是 Redux 存储中的状态。但我很困惑 state
有一个 todos
属性,它是一个数组。 todos
是一个 reducer ,并且是函数 here和 here 。阅读 https://github.com/reactjs/react-redux/blob/master/docs/api.md 后仍然无法理解 mapStateToProps
在这里做什么。 .
欢迎任何意见。谢谢
最佳答案
我会尝试一下。我希望我足够简洁。
正如您所看到的,“状态”被传递到“mapStateToProps”。这是一个包含您的 reducer 的对象 - 每个 reducer 的“存储”或“状态”。
例如,如果您发布的第二个示例如下所示。
import { combineReducers } from 'redux'
import todos from './todos'
import products from './products'
const rootReducer = combineReducers({
todos,
products
})
export default rootReducer
您现在处于“产品”状态。因此,传递到 mapStateToProps 的“状态”对象如下所示
state = {
todos,
products
}
因为“combineReducers”功能“组合”了所有reducers,并且基本上在“state/store”(主要应用程序商店)下创建 key 。请记住,redux 为您的全局状态创建了一个事实来源的想法。因此,通过组合Reducers,我们将这些新的状态对象作为键放置在您的“全局状态”中......也就是说,如果您有多个reducer。通常情况下,您只会拥有一个。很多时候,您可能不需要“所有状态”,也许只是一部分。
那么,你的组件,可以说我们做到了这一点。
const mapStateToProps = state => ({
todos: state.todos,
products: state.products
})
您的组件现在可以访问以下内容:
this.props.todos
this.props.products
mapStateToProps 所做的只是让您通过将这些值映射到组件上来方便地访问组件上的“全局”存储/状态。基本上,它会吞掉你的组件,添加 Prop ,然后用你的新值将其吐出。
关于javascript - 还原 todomvc : cannot understand `mapStateToProps` ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40600598/
开始学习 node.js 和 backbone.js 并使用 TodoMVC 示例作为我的指南。有几个部分我无法理解。见下文。 这是 app.js。 var express = require('ex
我一直在研究 Todo MVC App for Ember 。在模型中,我注意到对包含在 Ember.run.once 中的 commit() 方法的调用请参阅:https://github.com/
调查redux todomvc ,仍然对 connect 和 mapStateToProps 感到困惑. todomvc/src/containers/App.js 部分代码为: const ma
调查 todomvc backbone codes example .js/fold 中的结构: ├── app.js ├── collections │ └── todos.js ├── mod
我想知道为什么在 TodoMVC Backbone Marionette , Marionette.Layout 用于 Footer而不是像 Header 这样的简单 ItemView? 还有为什么要
我正在尝试使用 Durandal 构建待办事项应用程序的一个版本(包括 Knockout + RequireJS )来自 TodoMVC template .我意识到待办事项应用程序并没有真正展示 D
我正在尝试遵循 emberjs 入门文档上的 todomvc 教程来更好地理解它。在本教程的下一阶段,我们将编辑功能添加到待办事项中。 在以下链接中:http://emberjs.com/guides
这更像是一个关于学习 Polymer 1.0 的一般性问题,它被提出了 by the polymer team在 stackoverflow 上发布它们。 我个人学习东西的最佳方式是重新构建小应用程序
首先,对于版主来说,如果这不是发布此内容的正确位置,请不要生气:)。 我想知道是否有类似 TodoMVC 的东西适用于 Django、Rails、Symfony 等流行的 Web 框架。 如果没有这样
我很难获得在 BackboneJS 中工作的具有自动递增“顺序”属性的模型。 出于某种原因,每个订单都设置为 1。 nextOrder 函数中集合的长度始终为 0。 Options = _.exten
在 TodoStore.js 的第 107 行: /** * @param {function} callback */ addChangeListener: function(
我正在遵循 emberjs 的入门指南,并且可以添加待办事项。我的问题是,当我添加一个 todo 时,它的 id 值为 null - 有没有一种实用的方法来自动增加它? var TodosContro
我正在浏览 Backbone教程并浏览 source代码我不明白双击事件 (todo-view.js),它导致编辑方法,导致元素获取类“编辑”使元素(输入)可编辑。 最佳答案 这实际上是一个 CSS
我在 TodoMVC 示例的 index.html 中找到了以下代码行: 有人知道这个数据元素是用来做什么的吗? 最佳答案 它与 TodoMVC 的依赖关系无关。此属性的唯一目的是允许在侧面板中附加
我正在通过此处的示例 todomvc 应用程序学习 Backbone.js: http://todomvc.com/architecture-examples/backbone/ 我有点陷入了 app
我正在构建我的第一个 backbone.marionette 应用程序,但有些事情让我感到困惑。 在 TodoMVC 的 backbone.marionette 版本中似乎有两个不同的模块执行应用程序
我在检查从服务器下载 JavaScript 文件的请求是什么样子时发现了不同之处。我只是想看看链接在 HTML 中的样子,但是当我检查检查器时,我找不到任何对任何 JavaScript 的引用。当我检
我是一名优秀的程序员,十分优秀!