国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

node.js|vue.js|jquery|angularjs|React|json|js教程|

服務器之家 - 編程語言 - JavaScript - React - React三大屬性之props的使用詳解

React三大屬性之props的使用詳解

2022-03-02 16:28xiaoznz React

這篇文章主要介紹了React三大屬性之props的使用詳解,幫助大家更好的理解和學習使用React,感興趣的朋友可以了解下

上期講了state,接下來講講props。props功能在于組件間通信(父子組件),首先說說在各種組件中的用法:

類組件

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//父組件傳值
class Father extends React.PureComponent{
    render(){
        return (
            <Son value={"son"} />
        )
    }
}
 
class Son extends React.PureComponent{
    render(){
        return (
            <div>this data is {this.props.value}</div>
        )
    }
}

函數組件

?
1
2
3
4
5
6
7
8
9
10
11
function Fa(){
    return (
        <Son value={"son"} />
    )
}
 
function Son(props){
    return (
        <div>this data is {props.value}</div>
    )
}

在函數組件中,props只需要傳一個值就好了,非常方便 在React文檔中,對props的解釋是

當 React 元素為用戶自定義組件時,它會將 JSX 所接收的屬性(attributes)以及子組件(children)轉換為單個對象傳遞給組件,這個對象被稱之為 “props”

所以,我們通過props能得到父類組件上傳的值,也能通過props.children直接得到jsx寫成的子組件

props是只讀的

React在文檔中強調

所有 React 組件都必須像純函數一樣保護它們的 props 不被更改。

純函數的概念我們已經在redux中解釋過了,總而言之,我們不能改變props的值。

組件間通信

現在來總結一下組件間通信:

  • props 首先上一個類組件的寫法:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
//父組件給子組件傳值以及說過了,現在總結子組件給父組件傳值,此時往往需要父組件給子組件先傳一個props函數,子組件通過調用傳入的函數傳值改變父組件的值
export default class Fa extends Component {
    state = {faValue:'Fa1'}
 
    changeFa = (value)=>{
        this.setState(()=>{
            return {faValue:value}
        })
    }
    render() {
        return (
            <>
                <h1>Fa's value is {this.state.faValue}</h1>
                <Son changeFa={this.changeFa}/>
            </>
        )
    }
}
 
export default class Son extends React.PureComponent{
 
    changeValue = ()=>{
        this.props.changeFa(this.inputRef.value)
    }
    render() {
        return (
            <>
                <input type="text" placeholder={"請輸入您的值"} ref={(el)=>{this.inputRef = el}}/>
                <button onClick={this.changeValue}>change</button>
            </>
        )
    }
}

然后寫一個函數組件的寫法:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
function Fa(){
    const [faValue,setFaValue] = useState("Fa1")
 
    const changeFa = (value)=>{
        setFaValue(value)
    }
    return (
        <div>
            <h1>Fa's value is {faValue}</h1>
            <Son changeFa={changeFa} />
        </div>
    )
}
 
function Son(props){
    const inputValue = useRef("")
        //定義改變fa組件的值的函數
        const changeFaValue = ()=>{
            props.changeFa(inputValue.current.value)
        }
        return (
            <>
                <input type="text" placeholder={"請輸入您要改變的值"} ref={inputValue}/>
                <button onClick={changeFaValue}>change value</button>
            </>
        )
}
  • eventbus(訂閱-發布機制)

這個可以理解為弱化的redux。這邊我們用庫pubsub-js來寫。寫法如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
//比如針對之前的輸入案例,我需要給兄弟組件傳一個值value,如果不用props,我們該怎么寫
Bro:
export default class Bro extends Component {
 
    componentDidMount() {
        this.sonData =  PubSub.subscribe("brother",(msg,data)=>{
            console.log("Bro Component have recived the msg",data);
        })
    }
 
    componentWillUnmount() {
        PubSub.unsubscribe(this.sonData)
    }
 
    render() {
        return (
            <>
                <div>brother</div>
            </>
        )
    }
}
Son:
export default class Son extends React.PureComponent{
 
    changeValue = ()=>{
        PubSub.publish("brother",this.inputRef.value)
    }
 
    render() {
        return (
            <>
                <input type="text" placeholder={"請輸入您的值"} ref={(el)=>{this.inputRef = el}}/>
                <button onClick={this.changeValue}>change</button>
            </>
        )
    }
}

這個方法常用的就是三個api,第一個subscribe,發布的相應的事件,并且定義事件要做什么事。第二個是publish,訂閱發布的事情,并且傳入相應要改變的值。第三個是unsubscribe用來取消發布的事情,做內存的優化

以上就是React三大屬性之props的使用詳解的詳細內容,更多關于React三大屬性之props的資料請關注服務器之家其它相關文章!

原文鏈接:https://juejin.cn/post/6950932903274496031

延伸 · 閱讀

精彩推薦
  • ReactReact使用emotion寫css代碼

    React使用emotion寫css代碼

    這篇文章主要介紹了React如何使用emotion寫css代碼,幫助大家更好的理解和學習使用React,感興趣的朋友可以了解下...

    joychenke8212022-02-25
  • React深入理解React Native核心原理(React Native的橋接(Bridge)

    深入理解React Native核心原理(React Native的橋接(Bridge)

    這篇文章主要介紹了深入理解React Native核心原理(React Native的橋接(Bridge),本文重點給大家介紹React Native的基礎知識及實現原理,需要的朋友可以參考下...

    Gavell9572022-02-23
  • React詳解對于React結合Antd的Form組件實現登錄功能

    詳解對于React結合Antd的Form組件實現登錄功能

    這篇文章主要介紹了詳解對于React結合Antd的Form組件實現登錄功能,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需...

    浮生離夢6582022-02-23
  • React詳解React中key的作用

    詳解React中key的作用

    這篇文章主要介紹了React中key的作用,幫助大家更好的理解和學習使用React,感興趣的朋友可以了解下...

    夏花未眠4412022-02-28
  • ReactReact.Children的用法詳解

    React.Children的用法詳解

    這篇文章主要介紹了React.Children的用法詳解,幫助大家更好的理解和學習使用React框架,感興趣的朋友可以了解下...

    uuihoo10692022-02-23
  • ReactReact html中使用react的兩種方式

    React html中使用react的兩種方式

    這篇文章主要介紹了React html中使用react的兩種方式,本文給大家提到了React pwa的配置代碼,給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒...

    愚公搬代碼6322022-02-23
  • React使用react從零封裝一個可實時預覽的Json編輯器

    使用react從零封裝一個可實時預覽的Json編輯器

    文章將介紹如何使用react,開發一個自定義json編輯器組件.我們這里使用了jsoneditor這個第三方庫。...

    趣談前端7512022-01-12
  • React淺談React Router關于history的那些事

    淺談React Router關于history的那些事

    這篇文章主要介紹了淺談React Router關于history的那些事,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們...

    這是上帝的杰作11972022-02-23
主站蜘蛛池模板: 久久99这里只有精品 | 国产乱码精品一区二区三区av | 亚洲国产中文字幕 | 日韩三级黄色片 | 在线观看中文字幕亚洲 | 成年无码av片在线 | 日韩欧美在线综合网 | www.中文字幕.com | 99精品国产一区二区三区 | 久9re热视频这里只有精品 | 91av在线视频播放 | 精品亚洲一区二区三区 | 亚洲欧美日韩国产综合 | 欧美在线网站 | 欧美综合激情 | 亚洲美女久久 | 亚洲视频在线观看 | 国产日韩精品一区 | 自拍偷拍专区 | 欧美第一专区 | 欧美三级影院 | 国产毛片欧美毛片久久久 | 成人免费视频网站在线看 | www.av在线 | 黄色片子免费观看 | 成年人视频在线观看免费 | 91久久夜色精品国产网站 | 一本一本久久a久久精品综合妖精 | 荷兰欧美一级毛片 | a级片在线观看 | 欧美精品在线一区二区三区 | а√天堂中文在线资源8 | 欧美午夜在线观看 | 毛片一级在线 | 日韩精品久久久久久 | 亚洲一区二区高清 | 欧产日产国产一区 | 中文在线观看www | 亚洲视频在线观看免费 | 国产精品亚洲视频 | 免费成人在线视频网站 |