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)
//簡寫,將 mapStateToProps 和 mapDispatchToProps 直接引入 connect
// export default connect(state=>state,(dispatch)=>{
// return bindActionCreators(actionCreator,dispatch)
// })(TodoEvent)
3、actionCreator組件
//actionCreator中對應(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
以上就是本文的全部內(nèi)容,希望對大家的學(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-01
D3.js(v3)+react 實(shí)現(xiàn)帶坐標(biāo)與比例尺的散點(diǎn)圖 (V3版本)
散點(diǎn)圖(Scatter Chart),通常是一橫一豎兩個(gè)坐標(biāo)軸,數(shù)據(jù)是一組二維坐標(biāo),分別對應(yīng)兩個(gè)坐標(biāo)軸,與坐標(biāo)軸對應(yīng)的地方打上點(diǎn)。由此可以猜到,需要的元素包括circle(圓)和axis(坐標(biāo)軸),接下來通過本文大家分享D3.js(v3)+react 實(shí)現(xiàn)帶坐標(biāo)與比例尺的散點(diǎn)圖 (V3版本) ,一起看看2019-05-05
React實(shí)現(xiàn)控制減少useContext導(dǎo)致非必要的渲染詳解
這篇文章主要介紹了React如何有效減少使用useContext導(dǎo)致的不必要渲染,使用useContext在改變一個(gè)數(shù)據(jù)時(shí),是通過自己逐級查找對比改變的數(shù)據(jù)然后渲染,本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-11-11
React競態(tài)條件Race Condition實(shí)例詳解
這篇文章主要為大家介紹了React競態(tài)條件Race Condition實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11

