iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >React三大属性之props的使用详解
  • 796
分享到

React三大属性之props的使用详解

2024-04-02 19:04:59 796人浏览 泡泡鱼
摘要

目录类组件函数组件props是只读的 组件间通信 上期讲了state,接下来讲讲props。props功能在于组件间通信(父子组件),首先说说在各种组件中的用法: 类组件 //父

上期讲了state,接下来讲讲props。props功能在于组件间通信(父子组件),首先说说在各种组件中的用法:

类组件


//父组件传值
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>
        )
    }
}

函数组件


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 首先上一个类组件的写法:

//父组件给子组件传值以及说过了,现在总结子组件给父组件传值,此时往往需要父组件给子组件先传一个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>
            </>
        )
    }
}

然后写一个函数组件的写法:


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来写。写法如下:


//比如针对之前的输入案例,我需要给兄弟组件传一个值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的资料请关注编程网其它相关文章!

--结束END--

本文标题: React三大属性之props的使用详解

本文链接: https://www.lsjlt.com/news/123628.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • React三大属性之props的使用详解
    目录类组件函数组件props是只读的 组件间通信 上期讲了state,接下来讲讲props。props功能在于组件间通信(父子组件),首先说说在各种组件中的用法: 类组件 //父...
    99+
    2024-04-02
  • React三大属性之props怎么用
    这篇文章主要介绍React三大属性之props怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!props功能在于组件间通信(父子组件),首先说说在各种组件中的用法:类组件//父组件传值class Fat...
    99+
    2023-06-14
  • React三大属性之Refs的使用详解
    目录类组件 函数组件面试常问:React中的refs作用是什么? refs是React中用来取得某个JSX组件或者某个DOM中的一些状态值的时候,用来获取节点的方法。在React官方...
    99+
    2024-04-02
  • React 三大属性之state的使用详解
    目录类组件函数组件setState的坑 React中很多地方需要用到数据,这在React中被叫做状态,我们需要一个专门管理状态的方法,于是state相关的就诞生了。state应该被要...
    99+
    2024-04-02
  • React组件三大属性之state,props,refs
    目录1.1基本理解和使用1.1.1 使用React开发者工具调试1.1.2 定义组件的方式1.1.3 注意1.1.4 渲染类组件标签的基本流程1.2 组件实例的三大核心属性之一:st...
    99+
    2024-04-02
  • React组件实例三大属性statepropsrefs使用详解
    目录一、 State1.概念2.State的简单用法3. JS绑定事件4.react 绑定事件5.react this指向问题6.修改state值7.代码简写二、props...
    99+
    2024-04-02
  • React三大属性之state有什么用
    这篇文章给大家分享的是有关React三大属性之state有什么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。React中很多地方需要用到数据,这在React中被叫做状态,我们需要一个专门管理状态的方法,于是st...
    99+
    2023-06-14
  • react组件实例属性props实例详解
    目录react组件实例属性propspropsprops简单使用props批量操作props属性类型限制props属性限制的简写函数组件使用props补充:React之组件实例的三大...
    99+
    2023-01-30
    react组件实例属性props react props
  • React的三大属性是什么
    这篇文章主要为大家展示了“React的三大属性是什么”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“React的三大属性是什么”这篇文章吧。React三大属性props组件是封闭的,接收外部数据应...
    99+
    2023-06-29
  • VUE3之Non-Props属性的具体使用
    目录1. 概述2.Non-Props 属性2.1 初识Non-Props 属性2.2 不想把Non-Props 属性 渲染到最外层标签2.3Non-Props 属性的使用场景2.4 ...
    99+
    2024-04-02
  • 深入理解React三大核心属性
    目录1、State属性2、Props 属性3、Refs 属性 (1)字符串形式(2)函数回调形式(3)createRef创建ref容器1、State 属...
    99+
    2024-04-02
  • React的三大核心属性是什么
    今天小编给大家分享一下React的三大核心属性是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1、State 属性Rea...
    99+
    2023-06-29
  • React的三大属性你都知道吗
    目录React三大属性props函数组件类组件state有状态组件和无状态组件setStateprops和state属性的区别refsReact.createRefref的绑定总结R...
    99+
    2024-04-02
  • React中的ref属性的使用示例详解
    目录ref 简介1. 字符串形式的ref2. create形式的ref3. 回调函数形式的ref总结:ref 简介 React提供的这个ref属性,表示为对组件真正实例的引用,其实就...
    99+
    2023-05-17
    React ref属性使用 React ref属性
  • React组件封装中三大核心属性详细介绍
    目录1、介绍2、state概念演示3、props概念props与state区别4、refs概念refs种类5、父子组件什么是父子组件父子组件之间传值1、介绍 React组件中默认封装...
    99+
    2024-04-02
  • Java三大特性之继承详解
    目录概述由来定义好处继承的格式继承后的特点—成员变量成员变量不重名成员变量重名继承后的特点—成员方法成员方法不重名成员方法重名—重写(Overri...
    99+
    2022-11-13
    Java 特性 继承 Java 继承
  • Java三大特性之封装详解
    目录封装概述概述原则封装的步骤封装的操作—private关键字private的含义private的使用格式封装优化1—this关键字this的含义this使用...
    99+
    2022-11-13
    Java 特性 封装 Java 封装
  • Java三大特性之多态详解
    目录概述引入定义多态的体现多态的好处引用类型转换向上转型向下转型为什么要转型转型的异常概述 引入 多态是继封装、继承之后,面向对象的第三大特性。 生活中,比如跑的动作,小猫、小狗和大...
    99+
    2022-11-13
    Java 特性 多态 Java多态
  • mybatis foreach 属性及其三种使用情况详解
    目录foreach 属性介绍单参数是 array 类型单参数是 List 类型单参数是 Map 类型多参数foreach 属性介绍 foreach 用于迭代传入过来的参数。 它的属性...
    99+
    2024-04-02
  • Java超详细讲解三大特性之一的多态
    目录多态性instanceof 关键字的使用==和equals()区别object类中toString()的使用static关键字的使用总结多态性 1理解多态性:可以理解为一个事物的...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作