react-redux的初级使用(react初学者笔记)

一.create-react-app脚手架的搭建和运行

npm install -g create-react-app
create-react-app <项目名称> 
cd <项目名称> 
npm start

二.redux的简单使用

引入包

npm install redux --save

步骤:
1.写reducer方法(state,action)
2.创建store(通过createStore)
3.写方法(调用dispatch(action))
4.写显示界面
5.监听变化,重新渲染(store.subscribe)

为方便展示,这里直接改index.js文件
index.js

import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import {createStore} from 'redux';
// import * as serviceWorker from './serviceWorker';
//用于操作状态的仓库,通过动作操作state
const reducer = function(state={num:10},action){
  switch (action.type) {
    case "add":
       state.num+=1;
       break;
    case "decr":
         state.num-=1;
         break;
    default:
      console.log("找不到对应的action.type")
    }
    return {...state}; //相当于复制得到一个新的state
}

//创建store对象,关联对应仓库
const store = createStore(reducer)

//调用dispatch执行,传入对应的action.type,指明执行的方法
function add(){
  //通过仓库的方法dispath进行修改数据
  store.dispatch({type:'add'})
  console.log(store.getState())
}
//调用dispatch执行,传入对应的action.type,指明执行的方法
function decr(){
  //通过仓库的方法dispath进行修改数据
  store.dispatch({type:'decr'})
  console.log(store.getState())
}

//显示界面
const Counter = function(props){
  let state = store.getState()
  return (
    <div className="index">
      <h1 >值:{state.num}</h1>
      <button onClick={add}>加一</button>&nbsp;&nbsp;&nbsp;
      <button onClick={decr}>减一</button>
    </div>
  )
}

//监听变化,重新渲染
store.subscribe(()=>{
  ReactDOM.render(
    <Counter />,
     document.getElementById('root')
   );
})

ReactDOM.render(
 <Counter />,
  document.getElementById('root')
);

// serviceWorker.unregister();



三.react-redux的简单使用

引入包

npm install --save react-redux

步骤:
1.写reducer
2.初始化store
3.写映射state数据,映射dispatch方法
4. 写你的组件,调用映射的方法
5. 使用connect关联3映射方法和4你的组件
6. 使用 Provider 包裹5组件,渲染
为方便展示,这里直接改index.js文件
index.js

import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import {createStore} from 'redux';
import {Provider,connect} from 'react-redux'
/**
 * 步骤:1. 写reducer
 *      2. 初始化store
 *      3. 写映射state数据,映射dispatch方法。
 *      4. 写你的组件,调用映射的方法
 *      5. 使用connect关联3映射方法和4你的组件
 *      6. 使用 Provider 包裹5组件,渲染 
 */

class Counter extends React.Component{
    render(){
      const value = this.props.value;
      const onAddClick = this.props.onAddClick;
      return(
        <div>
          <h1>计数的数量:{value}</h1>
          <button onClick = {onAddClick}>加一</button>
        </div>
      )
    }
}

function reducer(state={num:0},action){
  switch (action.type) {
    case "add":
       state.num+=1;
       break;
    default:
      console.log("找不到对应的action.type")
    }
    return {...state};
}

const store = createStore(reducer);

//将state映射对应的props函数
function mapStateToProps(state){
  return {
    value : state.num
  }
}

//动作
const addAction = {
  type:'add'
}
//将修改state数据方法dispatch映射到props,实现方法贡献
function mapDispatchToProps(dispatch){
  return {
    onAddClick:()=>{
      dispatch(addAction)
    }
  }
}

//组件和数据进行连接
const App = connect(
  mapStateToProps,
  mapDispatchToProps
)(Counter)

// /**自动将store里的state和组件进行关联 */
ReactDOM.render(
  <Provider store = {store}>
    <App />
  </Provider>
  ,
   document.getElementById('root')
);

附上这两个文件的github地址:github地址


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值