程序员

react中的context

2018-10-12  本文已影响4人  yonglei_shang

在React中,数据可以以流的形式自上而下的传递,每当你使用一个组件的时候,你可以看到组件的props属性会自上而下的传递。但是,在某些情况下,我们不想通过父组件的props属性一级一级的往下传递,我们希望在某一级子组件中,直接得到上N级父组件中props中的值这时就用到了context

使用

npm install prop-types --save
import React, { Component } from 'react'
import PropTypes from 'prop-types'

class Button extends Component {
  render () {
    return (
      <div>
        <button>{this.context.color}</button>
      </div>
    )
  }
}

Button.contextTypes = {
  color: PropTypes.string
}

export default Button

message.js

import React, { Component } from 'react'
import PropTypes from 'prop-types'
import Button from './button.js'

class Message extends Component {
  render () {
    return (
      <div>
        <Button></Button>
      </div>
    )
  }
}

export default Message 

messageList

import React, { Component } from 'react'
import PropTypes from 'prop-types'
import Message from './message.js'

class MessageList extends Component {
// 首先要定义 childContextTypes 
  static childContextTypes = {
    color: PropTypes.string
  }
// 通过getChildText方法,来给子context对象的属性赋值
  getChildContext () {
    return {
      color: '蓝色'
    }
  }
  render () {
    return (
      <div>
        <Message ></Message >
      </div>
    )
  }
}
// 此处的和上面 static定义取一个就行
// MessageList.childContextTypes = {
//   color: PropTypes.string
// }

export default MessageList 
上一篇下一篇

猜你喜欢

热点阅读