react redux中如何獲取store數(shù)據(jù)并將數(shù)據(jù)渲染出來
前景提要
如果不了解基礎(chǔ)的話 ----- 點(diǎn)擊此處
本文著重實(shí)現(xiàn)效果,不會講太多原理問題
未使用 react-redux 管理工具

1.創(chuàng)建倉庫骨架并書寫初始代碼
src 目錄下創(chuàng)建

//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.正式開始
關(guān)鍵點(diǎn)在于 reducer.js 文件
它是一個(gè)純函數(shù),在不修改原始值的情況下返回一個(gè)新的數(shù)據(jù)
現(xiàn)在我們返回一個(gè)新的數(shù)據(jù)給 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 //將新的數(shù)據(jù)返回出去
}
export default reducer
因?yàn)椴]有數(shù)據(jù)傳遞過來,所以我們用一個(gè)默認(rèn)的數(shù)據(jù)來代替,然后把它給一個(gè)新的數(shù)據(jù)再傳出去(store會自動接收return 的數(shù)據(jù))
3.store 數(shù)據(jù)獲取方法(可略過)
既然前文已經(jīng)返回?cái)?shù)據(jù),那我們就看看返回來的數(shù)據(jù)的樣子
//在任意頁面(view)引入該store
import store from './store'
console.log("store====",store)
效果圖:

這是 該 store 的方法
通過 getState()方法來獲取數(shù)據(jù)
import store from './store' console.log(store.getState())

4.數(shù)據(jù)的獲取與展示
上文中 通過 store.getState()獲取到了參數(shù),那么我們就可以把獲取到的參數(shù)賦值給現(xiàn)在的 組件的 state
import React, { Component } from 'react'
import store from '../store' //引入
export default class One extends Component {
constructor(){
super()
this.state = {
todos:[] //一定要定義一個(gè)初始值
}
}
componentDidMount(){
this.setState({
todos:store.getState().todos //將獲取到的數(shù)據(jù)里面的內(nèi)容賦值給 該頁面 state
//頁面初次渲染的時(shí)候什么都沒有,在這里獲取并修改數(shù)據(jù)
//使得頁面重新渲染,拿到數(shù)據(jù)
})
}
render() {
return (
<div>
{
this.state.todos.map(item=>{ //這里就是展示了
return(
<ul key={item.id}>
<li>{item.id}</li>
<li>{item.title}</li>
</ul>
)
})}
</div>
)
}
}
效果圖:

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
詳解webpack + react + react-router 如何實(shí)現(xiàn)懶加載
這篇文章主要介紹了詳解webpack + react + react-router 如何實(shí)現(xiàn)懶加載,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-11-11
React使用Electron開發(fā)桌面端的詳細(xì)流程步驟
React是一個(gè)流行的JavaScript庫,用于構(gòu)建Web應(yīng)用程序,結(jié)合Electron框架,可以輕松地將React應(yīng)用程序打包為桌面應(yīng)用程序,本文詳細(xì)介紹了使用React和Electron開發(fā)桌面應(yīng)用程序的步驟,需要的朋友可以參考下2023-06-06
React+TS+IntersectionObserver實(shí)現(xiàn)視頻懶加載和自動播放功能
通過本文的介紹,我們學(xué)習(xí)了如何使用 React + TypeScript 和 IntersectionObserver API 來實(shí)現(xiàn)一個(gè)視頻播放控制組件,該組件具有懶加載功能,只有在用戶滾動頁面且視頻進(jìn)入視口時(shí)才開始下載視頻資源,需要的朋友可以參考下2023-04-04
解決React在安裝antd之后出現(xiàn)的Can''t resolve ''./locale''問題(推薦)
這篇文章主要介紹了解決React在安裝antd之后出現(xiàn)的Can't resolve './locale'問題,本文給大家分享解決方案,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-05-05
如何將你的AngularJS1.x應(yīng)用遷移至React的方法
本篇文章主要介紹了如何將你的AngularJS1.x應(yīng)用遷移至React的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-02-02

