> React的基於組件的架構和單向數據流使其非常適合UI結構。 但是,其狀態管理工具有意簡單,提醒我們反應主要處理模型視圖控制器(MVC)模式中的視圖。雖然僅使用React構建大型應用程序是可能的,但有效的代碼需要外部狀態管理。
鑰匙要點:
通過提供集中式狀態容器和不變的數據結構,> Redux的靈感來自Flux和Elm,是一個輕巧的庫,充當應用程序狀態的中央存儲庫。 它使用以下原則來控制狀態的變化:
一個商店持有整個應用程序狀態。>
狀態更新僅通過由於Redux使用不變的數據結構強制執行此約束。 ImmuthableJs提供有效的不變收藏,並具有可變的界面,從Clojure和Scala中汲取靈感。
演示:一個簡單的待辦事項列表>
此示例使用React,Redux和ImmutableJS創建一個托DO列表,允許對任務進行添加和完成切換。 完整的代碼可在github上找到[鏈接到GitHub repo將轉到此處]。設置
我們將創建兩個組件: 。 (在此處將插入組件代碼,類似於原始輸入,但可能會帶有較小的調整,以確保清晰度和簡潔)。
>
將虛擬數據轉換為ImmutableJs集合:(將虛擬數據轉換為不可能J的代碼將在此處插入)。
調整組件以使用不可分割的方法(例如, )。
動作 還原器 >創建還原函數以處理操作並更新狀態:(還在此處插入還原器函數的代碼)。
連接組件和存儲>
:(用於連接組件的代碼,包括容器和提供商在內的代碼,將在此處插入。
結論
package.json
。
npm init
安裝必要的依賴項:<code class="language-bash">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</code>
>我們將使用JSX和ES2015,該JSX和ES2015通過WebPack與Babel編輯。 創建:
webpack.config.js
<code class="language-javascript">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'] }
}
]
}
};</code>
>將構建腳本添加到>:
runpackage.json
<code class="language-json">"scripts": {
"build": "webpack --debug"
}</code>
compile。 npm run build
<todo></todo>
<todolist></todolist>
redux和不變的集成todo.get('id')
todo.id
react-redux
(此處將在此處添加,重新格式化以提高可讀性,並可能縮短/匯總以簡短)
以上是如何使用React,Redux和Immutable.js構建todo應用程序的詳細內容。更多資訊請關注PHP中文網其他相關文章!