> React的基于组件的架构和单向数据流使其非常适合UI结构。 但是,其状态管理工具有意简单,提醒我们反应主要处理模型视图控制器(MVC)模式中的视图。虽然仅使用React构建大型应用程序是可能的,但有效的代码需要外部状态管理。
钥匙要点:
通过提供集中式状态容器和不变的数据结构,> Redux的灵感来自Flux和Elm,是一个轻巧的库,充当应用程序状态的中央存储库。 它使用以下原则来控制状态的变化:
一个商店持有整个应用程序状态。>
状态更新仅通过由于Redux使用不变的数据结构强制执行此约束。 ImmuthableJs提供有效的不变收藏,并具有可变的界面,从Clojure和Scala中汲取灵感。
演示:一个简单的待办事项列表>
此示例使用React,Redux和ImmutableJS创建一个托DO列表,允许对任务进行添加和完成切换。 完整的代码可在github上找到[链接到GitHub repo将转到此处]。设置
我们将创建两个组件: 。 (在此处将插入组件代码,类似于原始输入,但可能会带有较小的调整,以确保清晰度和简洁)。
>
将虚拟数据转换为ImmutableJs集合:(将虚拟数据转换为不可能J的代码将在此处插入)。
调整组件以使用不可分割的方法(例如, )。
动作 还原器 >创建还原函数以处理操作并更新状态:(还在此处插入还原器函数的代码)。
连接组件和存储>
:(用于连接组件的代码,包括容器和提供商在内的代码,将在此处插入。
结论
package.json
。
npm init
安装必要的依赖项:npm install --save react react-dom redux react-redux immutable
npm install --save-dev webpack babel-core babel-loader babel-preset-es2015 babel-preset-react
:
webpack.config.js
module.exports = {
entry: './src/app.js',
output: {
path: __dirname,
filename: 'bundle.js'
},
module: {
loaders: [
{
test: /\.js$/,
exclude: /node_modules/,
loader: 'babel-loader',
query: { presets: ['es2015', 'react'] }
}
]
}
};
>:
runpackage.json
"scripts": {
"build": "webpack --debug"
}
npm run build
<todo></todo>
<todolist></todolist>
redux和不变的集成todo.get('id')
todo.id
react-redux
(此处将在此处添加,重新格式化以提高可读性,并可能缩短/汇总以简短)
以上是如何使用React,Redux和Immutable.js构建todo应用程序的详细内容。更多信息请关注PHP中文网其他相关文章!