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

做购物商城网站怎么注册自己的域名

做购物商城网站,怎么注册自己的域名,可以做3d电影网站有哪些,福田庆三下巴Redux 数据仓库 解决React 数据管理(状态管理) ,用于中大型,数据比较庞大,组件之间数据交互多的情况下使用。 作者:如果你不知道是否需要使用Redux,那么你就不需要它! 解决组件的数据通信。 …

Redux 数据仓库

解决React 数据管理(状态管理) ,用于中大型,数据比较庞大,组件之间数据交互多的情况下使用。

作者:如果你不知道是否需要使用Redux,那么你就不需要它!

解决组件的数据通信。

解决书和交互 较多的应用。

关键点:

Store: 数据仓库,保存数据的地方。

State :state 是一个对象,数据仓库里的所有数据都放到1个state里。

Action : 1 个动作, 触发数据改变的方法。

Dispatch : 将动作触发成方法

Reducer :是一个函数,通过获取动作,改变数据,生成一个新state. 从而改变页面。

案例: 点击加减事件,控制仓库的数据变化

第一种 1. 安装 : redux

npm install redux --save

2. 引入

// 引入仓库和 解构创建仓库的方法import Redux , {creatStore, createStore}  from 'redux' 
这个例子只用了这一个 createStore

3. 根据业务逻辑创建函数

// 2. 创建函数  通过动作 用于创建新的state   参数:传入需要修改的数据 和方法 (形参)
const reducer = function(state = { num: 0 }, action ){switch(action.type){case "add_" :state.num++;break;case "decrement_" :state.num--;break;default:break;}return {...state} // 解构,每次生成新的数据 返回
}

4. 创建仓库 把业务函数放入仓库

const store = createStore(reducer) //1. 创建仓库  放置要给函数,专门用于管理状态

5 两个点击事件

function add(){//通过仓库的方法 dispatch 进行修改数据store.dispatch({type:"add_" ,name:'lyx'}) //传递数据到第二步 创建的函数中 ->action中console.log(store.getState());}function decrement(){//通过仓库的方法 dispatch 进行修改数据store.dispatch({type:"decrement_"})console.log(store.getState());
}

6 使用仓库数据的面板 组件

  const Counter  = function(props){return (<div><h1>计数数量:{ store.getState().num }</h1><button onClick = {add}>计数++</button><button onClick = {decrement }>计数--</button></div>)}
  1. 数据修改后,监听 和渲染页面
store.subscribe(()=>{//监听数据变化 重新渲染  react时单向数据流ReactDOM.render( <App></App> ,document.getElementById('root'));
})

完整代码

App.js

import React from 'react';
// import ReactDOM from 'react-dom';// 引入仓库和 解构创建仓库的方法
import Redux , {creatStore, createStore}  from 'redux' // 2. 创建函数  通过动作 用于创建新的state   参数:传入需要修改的数据 和方法 (形参)
const reducer = function(state = { num: 0 }, action ){
console.log(action);switch(action.type){case "add_" :state.num++;break;case "decrement_" :state.num--;break;default:break;}return {...state} // 解构,每次生成新的数据 返回
}const store = createStore(reducer) //1. 创建仓库  放置要给函数,专门用于管理状态function add(){//通过仓库的方法 dispatch 进行修改数据store.dispatch({type:"add_" ,name:'lyx'}) //传递数据到第二步 创建的函数中 ->action中console.log(store.getState());}function decrement(){//通过仓库的方法 dispatch 进行修改数据store.dispatch({type:"decrement_"})console.log(store.getState());
}// 函数式的计数器const Counter  = function(props){return (<div><h1>计数数量:{ store.getState().num }</h1><button onClick = {add}>计数++</button><button onClick = {decrement }>计数--</button></div>)}class App extends React.Component {render(){return(   <div id = 'app'>    我是 app组件<Counter></Counter></div>)
}}export {App ,store
}

index.js

import React from 'react';
import ReactDOM from 'react-dom';
import Redux , {creatStore, createStore}  from 'redux' import {App ,store } from './App';ReactDOM.render( <App></App> ,document.getElementById('root'));store.subscribe(()=>{//监听数据变化 重新渲染  react时单向数据流ReactDOM.render( <App></App> ,document.getElementById('root'));
})

第二种 react-redux

概念:

Provider组件: 自动将store里的state和组件进行关联。

MapStatetoProps: 这个函数用于将store的state映射到组件的 props

mapdispatchToProps: 将store中的dispatch 映射到组件的props里,实现了方法的共享。

Connect 方法: 将组件和数据(方法)进行连接。

案例: 和上一个 一样

1 引入包

npm install react-redux --save

2 引入方法

import  {createStore}  from 'redux' import  {Provider, connect }  from 'react-redux' 

关键点把握

createStore

  function reducer(state={num:0},action){switch(action.type){case "add":state.num++;break;default:break}return {...state}}const store = createStore(reducer)

Provider( n. 供应者;养家者) 自动将store里的state和组件进行关联。

   ReactDOM.render(<Provider store= {store}><App></App></Provider>,document.getElementById('root'))

connect 将组件和数据(方法)进行连接。

 const App = connect(mapStateToProps,mapDispatchToProps
)(Counter)

3 数据的获取,数据的修改

要state映射到组件的props中,将修改数据的方法映射到组件的props中。

两个映射函数

//将state映射到props函数
function mapStateToProps(state){return{value:state.num}
}//将修改state数据的方法,映射到props  默认会传入store里的dispath方法
function mapDispatchToProps(dispatch){return{onAddClick:()=>{dispatch(addAction)}}
}

4 形成新的组件

// 将上面2个方法,将数据仓库的state和修改states的方法映射到组件上,形成新的组件。const App = connect(mapStateToProps,mapDispatchToProps
)(Counter)

5 原组件获得方法和属性值

class Counter extends React.Component{render(){//计数,通过stroe的state传给props,直接通过props就可以将state的数据获取const value = this.props.valueconst onAddClick = this.props.onAddClick;// 等同于vuex的 mapMutation mapStatereturn(<div><h1>技术的数量:{value}</h1><button onClick = {onAddClick}> 数字+1</button></div>)}
}

完整代码 index.js

import React from 'react';
import ReactDOM from 'react-dom';import  {createStore}  from 'redux' 
import  {Provider, connect }  from 'react-redux' 
// Provider  渲染标签class Counter extends React.Component{render(){console.log(this);//计数,通过stroe的state传给props,直接通过props就可以将state的数据获取const value = this.props.valueconst onAddClick = this.props.onAddClick;// 等同于vuex的 mapMutation mapStatereturn(<div><h1>技术的数量:{value}</h1><button onClick = {onAddClick}> 数字+1</button></div>)}
}const addAction = {type:"add"}function reducer(state={num:0},action){switch(action.type){case "add":state.num++;break;default:break}return {...state}}const store = createStore(reducer)//将state映射到props函数
function mapStateToProps(state){return{value:state.num}
}//将修改state数据的方法,映射到props  默认会传入store里的dispath方法
function mapDispatchToProps(dispatch){return{onAddClick:()=>{dispatch(addAction)}}
}// 将上面2个方法,将数据仓库的state和修改states的方法映射到组件上,形成新的组件。const App = connect(mapStateToProps,mapDispatchToProps
)(Counter)// ReactDOM.render( <App></App> ,document.getElementById('root'));ReactDOM.render(<Provider store= {store}><App></App></Provider>,document.getElementById('root'))

稍作注释:

import React from 'react';
import ReactDOM from 'react-dom';import  {createStore}  from 'redux' 
import  {Provider, connect }  from 'react-redux' 
// Provider  渲染标签// 第一步: 构建类组件   目的: 可以使用类组件的props
class Counter extends React.Component{render(){console.log(this);//计数,通过stroe的state传给props,直接通过props就可以将state的数据获取const value = this.props.valueconst onAddClick = this.props.onAddClick;// 等同于vuex的 mapMutation mapStatereturn(<div><h1>技术的数量:{value}</h1><button onClick = {onAddClick}> 数字+1</button></div>)}
}// 第二步: 构建业务逻辑  初始化仓库function reducer(state={num:0},action){switch(action.type){case "add":state.num++;break;default:break}return {...state}}const store = createStore(reducer)//将state映射到props函数
function mapStateToProps(state){return{value:state.num}
}const addAction = {type:"add"
}//将修改state数据的方法,映射到props  默认会传入store里的dispath方法
function mapDispatchToProps(dispatch){return{onAddClick:()=>{dispatch(addAction)}}
}// 将上面2个方法,将数据仓库的state和修改states的方法映射到组件上,形成新的组件。const App = connect(mapStateToProps,mapDispatchToProps
)(Counter)// ReactDOM.render( <App></App> ,document.getElementById('root'));// Provider 自动将store里的state和组件进行关联。ReactDOM.render(<Provider store= {store}><App></App></Provider>,document.getElementById('root'))

本节结束

http://www.yayakq.cn/news/965643/

相关文章:

  • 怎么自己做公司网站wordpress一键变灰色
  • 湖州做网站的公司布吉网站建设公司
  • 电子商务网站建设与维护考试题网站建设属于技术服务吗
  • 网站建设电话销售话术实例wordpress给分页加链接
  • 怎么请人做网站个人适合建什么网站
  • 天河建设网站服务wordpress产品详情页按钮
  • 洛阳做网站那家好网上推广营销
  • 建站公司选址城关网站seo
  • 杭州萧山网站建设手机上做整蛊网站
  • l林州住房建设部官方网站一家专业做导购的网站
  • 美食怎么做的小视频网站做网站联盟
  • 营销网站功能驻马店住房和城乡建设局网站
  • 个人相册网站模板做中英双语切换的网站
  • 用vs2010做免费网站模板下载地址学技巧网站制作
  • 网站的注册微信制作微网站开发
  • 个人养老金制度要来了模板网站怎么建设优化
  • 高校工会网站建设排行榜软件
  • 网站建设合同建设方注意事项深圳 服装 网站建设
  • 推广网站利润进入电商平台832采购
  • 网站用cms深圳高端企业官方网站建设
  • 横岗网站设计昆明门户网站建设
  • 制作网站作品东莞网站建设推广公司
  • 网站推广方法技巧域名查询ip138
  • 全球外贸网站有哪些工程机械外贸网站建设
  • 长沙中建设计院网站佛山哪里有做网站的
  • 阜宁做网站的公司电话广告设计公司产品
  • 网站关键词优化怎么弄北京手机网站开发公司
  • 设计手机商城网站建设wordpress知识付费插件
  • 如何做x响应式网站最好的网站模板
  • ghostwin8网站奖别人做黑龙江省住房和建设厅网站首页