React-redux實(shí)現(xiàn)小案例(todolist)的過程
使用React-redux實(shí)現(xiàn),待辦事項(xiàng)todolist案例。
注:以下列出主要頁面代碼,為說明React-redux實(shí)現(xiàn)的過程,所以并沒有將案例的完整代碼展示!
一、全局安裝:rudux、react-redux
npm install redux --save npm install react-redux
二、主要代碼:
1、項(xiàng)目的入口文件index.js
import React from 'react'; import ReactDOM from 'react-dom'; import './style/main.less'; import App from './App'; import * as serviceWorker from './serviceWorker'; //*********** 引入容器組件 ************* import {Provider} from 'react-redux'; import store from './store/store'; ReactDOM.render( // ********* 套入Provider組件,傳入store ********* <Provider store={store}> <App /> </Provider> , document.getElementById('root')); serviceWorker.unregister();
2、列表頁面(刪除、完成)
import React from 'react'; import actionCreator from '../../../store/todoStore/actionCreator' ; import {connect} from 'react-redux'; import { bindActionCreators } from 'redux'; class TodoEvent extends React.Component{ //刪除 delete(id){ // alert('delete'+id) this.props.delete(id); } //完成 finish(id){ // alert('finish'+id) this.props.finish(id); } //渲染函數(shù) renderList(){ //容器組件,通過props獲取 let {todolist}=this.props.todoStore; return todolist.map((item)=>{ return <li className='list-group-item' key={item.id}> {item.title} <button onClick={this.delete.bind(this,item.id)} className='btn btn-danger'>刪除</button> {item.isFinish?'已完成': <button onClick={this.finish.bind(this,item.id)} className='btn btn-success'>完成</button>} </li> }) } //渲染頁面 render(){ return( <div> <ul className='list-group'> {this.renderList()} </ul> </div> ) } } let mapStateToProps=(state)=>{ return state; } //bindActionCreators 將綁定的actionCreator中的方法,放到props里直接調(diào)用,并觸發(fā)dispacth let mapDispatchToProps=(dispatch)=>{ return bindActionCreators(actionCreator,dispatch) } //通過connect將UI組件,轉(zhuǎn)換成容器組件 export default connect(mapStateToProps,mapDispatchToProps)(TodoEvent) //簡(jiǎn)寫,將 mapStateToProps 和 mapDispatchToProps 直接引入 connect // export default connect(state=>state,(dispatch)=>{ // return bindActionCreators(actionCreator,dispatch) // })(TodoEvent)
3、actionCreator組件
//actionCreator中對(duì)應(yīng)的方法,只需 return action const actionCreator={ addlist(title){ let action={ type:'ADD_LIST', title:title } return action }, delete(id){ let action={ type:'DELETE_LIST', id:id } return action }, finish(id){ let action={ type:'FINISH_LIST', id:id } return action } } export default actionCreator
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
React實(shí)現(xiàn)基于Antd密碼強(qiáng)度校驗(yàn)組件示例詳解
這篇文章主要為大家介紹了React實(shí)現(xiàn)基于Antd密碼強(qiáng)度校驗(yàn)組件示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-01-01D3.js(v3)+react 實(shí)現(xiàn)帶坐標(biāo)與比例尺的散點(diǎn)圖 (V3版本)
散點(diǎn)圖(Scatter Chart),通常是一橫一豎兩個(gè)坐標(biāo)軸,數(shù)據(jù)是一組二維坐標(biāo),分別對(duì)應(yīng)兩個(gè)坐標(biāo)軸,與坐標(biāo)軸對(duì)應(yīng)的地方打上點(diǎn)。由此可以猜到,需要的元素包括circle(圓)和axis(坐標(biāo)軸),接下來通過本文大家分享D3.js(v3)+react 實(shí)現(xiàn)帶坐標(biāo)與比例尺的散點(diǎn)圖 (V3版本) ,一起看看2019-05-05React實(shí)現(xiàn)控制減少useContext導(dǎo)致非必要的渲染詳解
這篇文章主要介紹了React如何有效減少使用useContext導(dǎo)致的不必要渲染,使用useContext在改變一個(gè)數(shù)據(jù)時(shí),是通過自己逐級(jí)查找對(duì)比改變的數(shù)據(jù)然后渲染,本文通過示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-11-11React競(jìng)態(tài)條件Race Condition實(shí)例詳解
這篇文章主要為大家介紹了React競(jìng)態(tài)條件Race Condition實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11