当前位置: 首页 > news >正文

申请注册一个自媒体账号seo分析师招聘

申请注册一个自媒体账号,seo分析师招聘,网站备案幕布 下载,深圳团购网站建设一、简介 react中的状态只属于某个组件。而Redux是一个全局管理js状态的架构,让组件通信更加容易。 之前是状态在所有组件间传递,而redux通过store来实现这个功能。 Redux特性: 1.Single source Of truth,通过store唯一维护状态…

一、简介

        react中的状态只属于某个组件。而Redux是一个全局管理js状态的架构,让组件通信更加容易。

之前是状态在所有组件间传递,而redux通过store来实现这个功能。

Redux特性:

1.Single source Of truth,通过store唯一维护状态。

2.可预测性,state + action -> new state

3.纯函数更新store (纯函数 -> 输入决定输出)

举个例子: 待办事项表

function todos(state = [], action){switch(action.type){case 'ADD_TODO':return state.concat([{text: action.text, completed: false}]);case 'TOGGLE_TODO':return state.map((todo, idx) => {action.index === idx ? {text: todo.text, completed: !toto.completed}: todo})default:return state}}

二、核心概览

拿上图举个例子,前端ui产生了deposit和withdraw2个事件,store通过dispatcher分发对应的事件给reducer处理,reducer处理后更新state。前端ui根据state重新渲染。

1.store

Redux的状态机实现,store 通过state存储状态,通过dispatch传播事件,通过Reducer处理事件。

2.action

        action表示变更事件。一般包含event type 和 context。

3.Reducer

        reducer是状态事件处理。

举个例子: 待办事项表

function todoApp(state = initialState, action){switch (action.type){case ADD_TODO:return Object.assign({}, state, {todos:[...state.todos,{text: action.text,completed: false}]});default:return state;}
}

三、使用示例

用redux实现一个简单计数器,包括增加、减少功能。

import React from 'react';
import {createStore} from 'redux';
function run(){// store initial stateconst initialState = { count: 0};// reducerconst counter = (state = initialState, action) => {switch (action.type){case "PLUS_ONE":return {count: state.count + 1};case "MiNUS_ONE":return {count: state.count - 1};case "CUSTOM_COUNT":return {count: state.count + action.payload.count};default:return state;}  }// create storeconst store = createStore(counter);// Action creatorfunction plusOne(){return {type: "PLUS_ONE"}}function minusOne(){return {type: "MINUS_ONE"};}function customCount(count){return {type: "CUSTOM_COUNT", payload:{count}};}// 订阅redux 状态变更store.subscribe(() => console.log(store.getState()));store.dispatch(plusOne());store.dispatch(minusOne());store.dispatch(customCount(5));
}export default ()  => {<div><button onClick={run}>Run</button><p>* 请打开控制台查看运行结果</p></div>
}

bindActionCreators使用,工具类,可以减少显示dispatch操作

import React from 'react';
import {createStore, bindActionCreators} from 'redux';
function run(){// store initial stateconst initialState = { count: 0};// reducerconst counter = (state = initialState, action) => {switch (action.type){case "PLUS_ONE":return {count: state.count + 1};case "MiNUS_ONE":return {count: state.count - 1};case "CUSTOM_COUNT":return {count: state.count + action.payload.count};default:return state;}  }// create storeconst store = createStore(counter);// Action creatorfunction plusOne(){return {type: "PLUS_ONE"}}function minusOne(){return {type: "MINUS_ONE"};}function customCount(count){return {type: "CUSTOM_COUNT", payload:{count}};}plusOne = bindActionCreators(plusOne, store.dispatch);minusOne = bindActionCreators(minusOne, store.dispatch);customCount = bindActionCreators(customCount, store.dispatch);// 订阅redux 状态变更store.subscribe(() => console.log(store.getState()));plusOne();minusOne();customCount(5);
}export default ()  => {<div><button onClick={run}>Run</button><p>* 请打开控制台查看运行结果</p></div>
}

四、结合React使用

使用Connect功能,将redux的action和state作为props传递给组件。

计数器组件使用样例

import React from 'react';
import {createStore, bindActionCreators} from 'redux';
import {Provider, connect} fomr 'react-redux';// store initial state
const initialState = {count: 0};// reducer
const counter = (state = initialState, action) => {switch (action.type){case "PLUS_ONE":return {count: state.count + 1};case "MiNUS_ONE":return {count: state.count - 1};case "CUSTOM_COUNT":return {count: state.count + action.payload.count};default:return state;}  
}
// create store
const store = createStore(counter);
// Action creator
function plusOne(){return {type: "PLUS_ONE"}
}
function minusOne(){return {type: "MINUS_ONE"};
}export class Counter extends React.Component{render(){const {count, plusOne, minusOne} = this.props;return (<div className = "counter"><button onClick = {minusOne}>-</button><span>{count}</span><button onClick = {plusOne}>+</button></div>);}
}// 将store的state与组件props绑定
function mapStateToProps(state){return {count: state.count};
}// 将store的action与组件props绑定
function mapDispatchToProps(dispatch){return bindActionCreators({plusOne, minusOne}, dispatch)
}// 通过connect组件将store与counter组件关联
const ConnectedCounter = connect(mapStateToProps, mapDispatchToProps)(Counter) ;// 返回使用样例
export default class CounterSample extends React.Component{render(){return (// prodiver 基于react context实现,可以让里面的子组件都能获取到store<Provider store = {store}><ConnectedCounter/></Provider>);}
}

http://www.mmbaike.com/news/102963.html

相关文章:

  • 网站制作排名中国十大搜索引擎网站
  • 新疆做网站哪家好怎么查百度竞价关键词价格
  • 专业做网站套餐网址网域ip地址查询
  • wordpress wjj整站优化快速排名
  • 如何进行医药网站建设营销网站的建造步骤
  • 海淀手机网站建设精准获客
  • spacious wordpress 主题sem和seo是什么职业
  • 输入网站查看空间今日国内新闻最新消息10条新闻
  • 建设电子商务平台网站湖南正规seo公司
  • wordpress构建自己的网站夫唯seo教程
  • 做政协网站的目的是什么营销网络推广
  • 深圳做微商网站百度快速排名工具
  • 网站建设团购全球搜是什么公司
  • 网站设计框架图网络营销与管理
  • 企业网站最重要的访问对象是巩义网站推广优化
  • 郑州市网站建设哪家公司好百度云资源搜索平台
  • 日照网站设计2022年今天新闻联播
  • 做网站还是博客电商培训机构
  • 昌平石家庄网站建设代发关键词包收录
  • 从事网站建设在线资源搜索神器
  • 网站由哪些部分组成部分组成部分组成青岛seo排名收费
  • 创意字体在线生成免费苏州关键词优化怎样
  • 自建网站 微信网页版网络广告营销方案策划
  • 百度网站权重关键字是什么意思
  • 烟台做网站那家好上海做网站优化
  • 网站建设liluokj刷神马关键字排名软件
  • 0元购怎么在网站做石家庄网站建设方案推广
  • 学校网站建设目标360优化大师
  • 音响网站模板上海快速排名优化
  • 广州中小企业网站制作链接搜索引擎