父子组件之间通信

  • 父 ===> 子:父组件通过属性往子组件传值,子组件通过props接收
    • children props
    • render props
  • 子 ===> 父:父组件通过属性传递回调函数,子组件通过props调用父组件的函数,最终父组件中操作函数

非父子组件之间通信

  • 借用第三方库pubsub-js,消息订阅-发布机制(先订阅,后发布)技术实现

解决的问题:之前,状态及状态操作的方法只能放在共同的父组件;现在,实现状态谁用谁操作,结构更清晰

render() {
    return (
      <div className="todo-container">
        <Header />
        <List />
      </div>
    )
}
// list
componentDidMount() {
    // 订阅消息
    this.token = PubSub.subscribe('addTodo', (msg, todo) => {
        console.log('消息已发布:', msg, todo);  // 消息已发布:addTodo
    })
}
componentWillUnMount() {
    // 取消订阅
    PubSub.unsubscribe(this.token)
}
// header
handleKeyUp = (event) => {
    const {target, keyCode} = event
    // 发布消息
    PubSub.publish('addTodo', {id: nanoid(), name: target.value, done: false})
}

redux

通常适用于祖孙组件通信

context

生产者-消费者模式,开发中用的少

results matching ""

    No results matching ""