前景提要
如果不了解基础的话 ----- 点击此处
本文着重实现效果,不会讲太多原理问题
未使用 react-redux 管理工具
1.创建仓库骨架并书写初始代码
src 目录下创建
//store/index.js 代码
import { createStore } from 'redux';
import reducer from "./reducer"
const store = createStore(reducer);
export default store
//store/reducer.js
const reducer = (prevState,action)=>{
let newState = {...prevState}
return newState
}
export default reducer
2.正式开始
关键点在于 reducer.js 文件
它是一个纯函数,在不修改原始值的情况下返回一个新的数据
现在我们返回一个新的数据给 store(仓库)
//store/reducer.js
let state = {
todos:[
{
id:1,
title:"今天周一",
isFinished:false
},
{
id:2,
title:"今天周二",
isFinished:true
}
]
}
const reducer = (prevState = state,action)=>{
let newState = {...prevState}
return newState //将新的数据返回出去
}
export default reducer
因为并没有数据传递过来,所以我们用一个默认的数据来代替,然后把它给一个新的数据再传出去(store会自动接收return 的数据)
3.store 数据获取方法(可略过)
既然前文已经返回数据,那我们就看看返回来的数据的样子
//在任意页面(view)引入该store
import store from './store'
console.log("store====",store)
效果图:
这是 该 store 的方法
通过 getState()方法来获取数据
import store from './store'
console.log(store.getState())
4.数据的获取与展示
上文中 通过 store.getState()获取到了参数,那么我们就可以把获取到的参数赋值给现在的 组件的 state
import React, { Component } from 'react'
import store from '../store' //引入
export default class One extends Component {
constructor(){
super()
this.state = {
todos:[] //一定要定义一个初始值
}
}
componentDidMount(){
this.setState({
todos:store.getState().todos //将获取到的数据里面的内容赋值给 该页面 state
//页面初次渲染的时候什么都没有,在这里获取并修改数据
//使得页面重新渲染,拿到数据
})
}
render() {
return (
<div>
{
this.state.todos.map(item=>{ //这里就是展示了
return(
<ul key={item.id}>
<li>{item.id}</li>
<li>{item.title}</li>
</ul>
)
})}
</div>
)
}
}
效果图:
以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。