React-Redux的基本使用

一、引入文件

安装redux
cnpm install redux --save

安装react_redux
npm install react_redux —save

二、项目目录src文件夹下新建store文件夹(src/store/index.js)
index.js文件内容:

import { createStore } from 'redux'
import reducer from './reducer'

const store = createStore(reducer)

export default store

三、store文件夹路径下新建reducer.js文件(src/store/reducer.js)
reducer就是根据action来对state进行操作(文件中没有将action声明为常量,也可以建立一个constants.js文件,将方法名声明为常量)

const defaultState = {
  inputValue: '',
  list: []
}

export default (state=defaultState, action)=>{

  if(action.type === 'inputVlueChange'){
    const newState = JSON.parse(JSON.stringify(state))
    newState.inputValue = action.value
    return newState
  }
  
  if(action.type === 'addListData'){
    const newState = JSON.parse(JSON.stringify(state))
    newState.list.push(state.inputValue)
    newState.inputValue = ''
    return newState
  }

  if(action.type === 'deleateItem'){
    const newState = JSON.parse(JSON.stringify(state))
    newState.list.splice(action.value, 1)
    return newState
  }

  return state
}

四、react-redux中Provider的使用
1、在项目入口index.js文件中,引入Provider和上面创建的store,同时引入组件;
2、将需要使用store的组件包裹在Provider中,只有包裹Provider后才能传递reducer中的数据和action

import React from 'react';
import ReactDOM from 'react-dom';

import TodoList from './TodoList'
import { Provider } from 'react-redux'
import store from './store/index'

const App = (
  
    
  
)

ReactDOM.render(
  App
  ,
  document.getElementById('root')
);

五、react-redux中connect的使用
在组件TodoList中引入connect

import React from 'react';
import {connect} from 'react-redux'

// 无状态组件
const TodoList = (props)=>{
  let { inputValue, inputChange, addListData, deleateItem} = props
  return (
    
    { props.list.map((item, index) => { return (
  • deleateItem(index)}>{item}
  • ) }) }
); } const stateToProps = (state)=>{ return{ inputValue: state.inputValue, list: state.list } } const dispatchToProps = (dispatch)=>{ return { inputChange(e){ const action = { type: 'inputVlueChange', value: e.target.value } dispatch(action); }, addListData(){ const action = { type: 'addListData', } dispatch(action); }, deleateItem(index){ const action = { type: 'deleateItem', value: index } dispatch(action); } } } export default connect(stateToProps, dispatchToProps)(TodoList);

connect中两个参数
stateToProps:将store中的数据作为props绑定到组件上;
dispatchToProps:将store中的action作为props绑定到组件上。
如上使用connect函数连接后,在组件TodoList中的props中就可以使用store中的数据inputValue和方法inputVlueChange等等

你可能感兴趣的:(React-Redux的基本使用)