react-hot-loader 局部热更新与webpack 热更新 分析:react
webpack-dev-server 的热加载是开发人员修改了代码通过打包,从新刷新了整个页面。而 react-hot-loader 不会刷新整个页面,它只替换了修改的代码,作到了页面的局部刷新。但它须要依赖 webpack 的 HotModuleReplacement 热加载插件webpack
import { AppContainer } from 'react-hot-loader';
render(
<AppContainer>
<container/>
</AppContainer>,
app
);git
2.redux 分析github
const defaultState = 0;
const reducer = (state = defaultState, action) => {
switch (action.type) {
case 'ADD':
return state + action.payload;
default:
return state;
}
};
const state = reducer(1, {
type: 'ADD',
payload: 2
});
上面代码中,reducer函数收到名为ADD的 Action 之后,就返回一个新的 State,做为加法的计算结果。其余运算的逻辑(好比减法),也能够根据 Action 的不一样来实现。
推荐redux 莞式教程,很清晰https://github.com/kenberkeley/redux-simple-tutorialweb
父子组件传值(react 父子组件通讯):redux
父组件给子组件传值 app
1.在调用子组件的时候定义一个属性 <Header title={this.state.msg}></Header> ----------子组件使用方式this.props.msg 获取到父组件传下来的数据dom
2.父组件给子组件传入一个方法 webpack-dev-server
父组件定义:<Header method={this.method}> 子组件中获取父组件中的方法: <button onClick={this.props.method}>调用父组件的方法</button>函数
3. 父组件能够将本身传给子组件 <Header father={this}></Header> ------>子组件经过 this.props.father.XX获取数据或者方法
^ ^ ^ ^ ^
|| || || || ||
说明:父组件不只能够给子组件传值,还能够给子组件传方法,以及把整个父组件传给子组件,可让子组件给父组件传值。
父组件主动获取子组件的数据
一、父组件调用子组件的时候指定ref的值 <Header ref='header'></Header>
二、父组件经过this.refs.header 获取整个子组件实例 (dom(组件)加载完成之后获取 )
校验值类型: defaultProps propsTypes
defaultProps:父子组件传值中,若是父组件调用子组件的时候不给子组件传值,能够在子组件中使用defaultProps定义的默认值
propTypes:验证父组件传值的类型合法性
一、引入import PropTypes from 'prop-types';
二、类.propTypes = {
name: PropTypes.string
};
3.类.defaultProps={
name:
}
注意:二者都是定义在子组件里面
react中循环出数据
constructor(props){ super(props); this.state({ list:[] }) } render(){ <ul> { this.state.list.map(value,key){ return <li key={key}>{value.title}</li> } } </ul> }
条件渲染
描述:根据组件的状态,只渲染组件中的一部分,咱们能够像在JavaScript中写条件语句同样地写条件渲染语句: 这里我只介绍使用变量存储元素和函数来render ,将不介绍 &&运算符 和三目运算符 这些经常使用到的
//使用变量来存储元素
function Component (props){
}
render(){
<div>
<Component isTrue={false}/>
</div>
}
//阻止组件渲染,有时候咱们须要等到有指定的值时,渲染指定的组件,而不形成组件切换闪动的状况,我么你能够经过在render函数中返回一个null,来实现咱们逍遥的效果
<Component1 />
<Component2 /> // 1 2 是两个组件
state={
isfalse:false
}
Component=()=>{
if(getData){
if(isfalse{
return <Component1 />
}else{
return <Component2 />
}
}else{
return null
}
}
render(){ <div> {this.Component()} </div>}