内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

react的通信方式怎么實(shí)現(xiàn)

今天小編給大家分享一下react的通信方式怎么實(shí)現(xiàn)的相關(guān)知識(shí)點(diǎn),內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識(shí),所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

成都創(chuàng)新互聯(lián)公司是專業(yè)的漠河網(wǎng)站建設(shè)公司,漠河接單;提供成都網(wǎng)站建設(shè)、成都網(wǎng)站制作,網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行漠河網(wǎng)站開發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!

react通信方式有:1、用props進(jìn)行父子組件通信;2、用回調(diào)函數(shù)進(jìn)行子父組件通信;3、用變量提升進(jìn)行兄弟組件通信;4、用Context進(jìn)行跨組件通信;5、用node的events模塊進(jìn)行單例通信;6、用redux共享數(shù)據(jù)通信。

react的通信方式怎么實(shí)現(xiàn)

本教程操作環(huán)境:Windows7系統(tǒng)、react17.0.1版、Dell G3電腦。

React的六種通信方式

1.props父子通信
       2.回調(diào)函數(shù),子父通信
       3.變量提升,兄弟組件通信
       4.Context,跨組件通信
       5.node的events模塊的單例通信
       6.redux共享數(shù)據(jù)通信

1.props父子通信

function Children(props) {
      return (
        <div>
          <p>Children</p>
          <p>{props.text}</p>
        </div>
      )
    }
    function Parent() {
      return (
        <div>
          <p>Parent</p>
          <Children text="這是爸爸傳給你的東西"></Children>
        </div>
      )
    }
    
    export default Parent

2.回調(diào)函數(shù),子父通信

function Children(props) {
  return (
    <div>
      <p>Children</p>
      <p>{props.text}</p>
      <button onClick={() => { props.handleChange('改變了') }}>
        點(diǎn)擊我改變爸爸傳給我的東西
      </button>
    </div>
  )
}

function Parent() {
  let [text, setText] = useState('這是爸爸傳給你的東西')
  function handleChange(val) {
    setText(val)
  }
  return (
    <div>
      <p>Parent</p>
      <Children handleChange={handleChange} text={text}></Children>
    </div>
  )
}
export default Parent

3.變量提升,兄弟組建通信

function Children(props) {
  return (
    <div>
      <p>Children</p>
      <button onClick={() => { props.setText('我是Children發(fā)的信息') }}>給Children1發(fā)信息</button>
    </div>
  )
}
function Children1(props) {
  return (
    <div>
      <p>Children1</p>
      <p>{props.text}</p>
    </div>
  )
}

function App() {
  let [text, setText] = useState('')
  return (
    <>
      <div>APP</div>
      <Children setText={setText}></Children>
      <Children1 text={text}></Children1>
    </>
  )
}
export default App

4.Context,跨組建通信

舊寫法

class Children extends React.Component {
  static contextTypes = {
    text: PropsType.string
  }
  render() {
    return (
      <div>
        <p>Children</p>
        <p>{this.context.text}</p>
      </div>
    )
  }
}

class Parent extends React.Component {
  static childContextTypes = {
    text: PropsType.string
  }
  getChildContext() {
    return {
      text: '我是爸爸的信息'
    }
  }
  render() {
    return (
        <div>
          <p>Parent</p>
          <Children></Children>
        </div>
    )
  }
}
export default Parent

新寫法

const { Consumer, Provider } = React.createContext()

class Children extends React.Component {
  render() {
    return (
      <Consumer>
        {
          (value) => (
            <div>
              <p>Children1</p>
              <p>{value.text}</p>
            </div>
          )
        }
      </Consumer>
    )
  }
}

class Parent extends React.Component {
  render() {
    return (
      <Provider value={{ text: '我是context' }}>
        <div>
          <p>Parent</p>
          <Children1></Children1>
        </div>
      </Provider>
    )
  }
}

export default Parent

5.node的events模塊的單例通信

function Children(props) {
  return (
    <div>
      <p>Children</p>
      <p>{props.text}</p>
      <button onClick={() => { props.event.emit('foo') }}>點(diǎn)擊我改變爸爸傳給我的東西</button>
    </div>
  )
}

function Parent() {
  let [text, setText] = useState('這是爸爸傳給你的東西')
  let event = new Events()
  event.on('foo', () => { setText('改變了') })
  return (
    <div>
      <p>Parent</p>
      <Children event={event} text={text}></Children>
    </div>
  )
}
export default Parent

注意??:這種通信記住在頂部引入events模塊,無需安裝,node自身模塊。

6.redux共享數(shù)據(jù)通信

store.js

import { createStore } from 'redux'

let defaultState = {
    text: '我是store'
}

let reducer = (state = defaultState, action) => {
    switch (action) {
        default: return state
    }
}

export default createStore(reducer)

child.js

import React from 'react'

import { connect } from 'react-redux'

class Child extends React.Component {
    render() {
        return (
            <div>Child<p>{this.props.text}</p></div>
        )
    }
}

let mapStataToProps = (state) => {
    return {
        text: state.text
    }
}

export default connect(mapStataToProps, null)(Child)

Parent.js

class Parent extends React.Component {
  render() {
    return (
      <Provider store={store}>
        <div>
          <p>Parent</p>
          <Child></Child>
        </div>
      </Provider>
    )
  }
}

export default Parent

注意:記得安裝reduxreact-redux

以上就是“react的通信方式怎么實(shí)現(xiàn)”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會(huì)為大家更新不同的知識(shí),如果還想學(xué)習(xí)更多的知識(shí),請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

網(wǎng)站題目:react的通信方式怎么實(shí)現(xiàn)
鏈接URL:http://www.rwnh.cn/article48/psgihp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站商城網(wǎng)站、Google、移動(dòng)網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)、用戶體驗(yàn)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)
中江县| 大洼县| 寻乌县| 武义县| 北辰区| 桃园市| 武义县| 米泉市| 那坡县| 兖州市| 乌审旗| 尼玛县| 会昌县| 深州市| 镇沅| 万山特区| 申扎县| 静海县| 尉犁县| 五寨县| 铅山县| 苏州市| 扶绥县| 龙井市| 西吉县| 海兴县| 和平区| 潞西市| 红安县| 夹江县| 万州区| 井研县| 永泰县| 额敏县| 彝良县| 都安| 潍坊市| 邯郸县| 惠水县| 历史| 肥城市|