[toc]
## old
### 使用
父容器
```
export default class xxx extends React.Component{
static childContextTypes = {
location:PropTypes.object
,history:PropTypes.object
}
getChildContext(){
let that = this;
return {
location:this.state.location
,history:{
push(path){
if(typeof path == 'object'){
// state 是用来保存状态的
let {pathname,state} = path;
that.setState({location:{...that.state.location,state}},()=>{
window.location.hash = pathname;
})
}else{
window.location.hash = path; //会自动添加'#'
}
}
}
}
}
```
子孙
```
static contextTypes = {
location: PropTypes.object
, history: PropTypes.object
}
...
this.context -> 指向的即是 contextTypes声明的对象
...
```
### 注意事项
```
getChildContext(){
return {
location:this.state.location
,history:(hash)=>{
window.location.hash = hash;
}
}
}
<<<
index.js:2178 Warning: Failed child context type: Invalid child context `history` of type `function` supplied to `xxx`, expected `object`. in xxx (at App.js:11)
```
return的必须是一个对象,且这个对象里的属性的值也必须是对象,否则就会像上栗一样报错
```
getChildContext(){
return {
location:this.state.location
,history:{
push:(hash)=>window.location.hash = hash
}
}
}
```
- 空白目录
- 01.JSX,了解一下?
- JSX与虚拟DOM
- React
- 02.React文档精读(上)`
- React路由
- 关于BrowserRouter
- 关于Route
- 应用
- 权限认证
- case1
- context
- 新context
- 03.React路由
- 04.Diff
- 05.styled-components
- redux设计思想与API
- redux实现1
- 06.redux2
- 06.redux3
- 关于状态初始化
- saga
- 新版
- 使用saga进行业务逻辑开发
- react-router-redux
- React性能优化
- immutable使用
- 未整理
- FAQ
- 常用中间件
- pureComponent
- 项目相关总结
- antd分尸
- 按需加载
- ReactWithoutJSX
- 我的组件库
- C领域
- 用户接口
- htmlType
- style
- show
- conjure
- grid
- inject
- stop
- 内部接口
- 衍生组件
- Button
- 报错集锦
- ReactAPI
- 类上的那些属性
- prop-types
- React.createElement
- React.cloneElement
- React.Children和props.children
- react元素和react组件关于作为children方面的那些问题
- react组件与虚拟dom
- ref