首页 > 其他分享 >react 父子传值

react 父子传值

时间:2023-01-03 15:00:47浏览次数:44  
标签:父子 title react btnText PropTypes props 组件 import 传值


react 父子传值_数据

创建父组件 Demofather.js

第一种传值:在子元素标签上  title='待办事项' x={1}

字符串可以用" "引号传递

数字类型用{}大括号传递

子组件标签内部可以传递任何数据,react将自动生成props.children数据

import React, { Component } from 'react';
import{Demo,Demo2} from './index.js' //统一管理子元素的export

class Demofather extends Component {

render() {
return (
<div className="App">
<Demo title='待办事项' x={1}>
今日事今日毕
</Demo>
<Demo2 btnText='add'/>
</div>
);
}
}

export default Demofather

创建函数式子组件 Demo.js

函数式子组件通过参数props接收

import React from 'react'
//引入类型检查插件
import PropTypes from 'prop-types'

//函数式组件
export default function Demo(props){
console.log(props) //{title: "待办事项", children: "我是其他传值"}
return(
<div>
<p>我是父元素传来的:{props.title}</p>
<p>我是父元素中标签内的传值:{props.children}</p>
<p>我是父元素传来的数字:{props.x+props.x}</p>
</div>
)
}

Demo.propTypes={
title:PropTypes.string,
x:PropTypes.number.isRequired //监测是否为必传
}

创建类子组件 Demo2.js

类子组件通过 {this.props.btnText} 接收

import React, { Component } from 'react';

//引入类型检查插件
import PropTypes from 'prop-types'

export default class Demo2 extends Component {
//类型检验
static propTypes ={
btnText:PropTypes.string
}
//没传值的话默认值
static defaultProps = {
btnText:'添加'
}
render() {
return (
<div>
<input type="text"/>
<button>{this.props.btnText}</button>
</div>
);
}
}

其次还安装了数据类型检验的插件prop-types:

安装:npm install prop-types --save

需要检验的组件中引入:import  PropTypes  from  'prop-types'

函数式组件这样检验:

组件名+propTypes

后面加isRequired 监测必传项是否传入

Demo.propTypes={
title:PropTypes.string,
x:PropTypes.number.isRequired //监测是否为必传
}

类组件中这样检验:

//类型检验
static propTypes ={
btnText:PropTypes.string
}
//没传值的话默认值
static defaultProps = {
btnText:'添加'
}

如果没有按照检验规则传入,f12会报错

标签:父子,title,react,btnText,PropTypes,props,组件,import,传值
From: https://blog.51cto.com/u_12422954/5985788

相关文章

  • 【React框架基础知识】React框架的简介与基本使用方法
    一、简介React:由Facebook开发的用于构建用户界面的JavaScript库(开源)。1.1为什么要学前端框架?原生Javascript有很多痛点:原生JavaScript操作DOM繁琐、效率低(DOM-API操作UI......
  • 二级多级子路由时,react面包屑获取及处理
     因react-router中路由配置时,子路由为父级路由+子路由拼接而成,故当实现面包屑时需要根据当前路由获取完整的父子路由链入参:如/layout/list/showList出参:如['/l......
  • 面试官:说说React-SSR的原理
    前言所谓同构,简而言之就是,第一次访问后台服务时,后台直接把前端要显示的界面全部返回,而不是像SPA项目只渲染一个<divid="root"></div>剩下的都是靠JavaScript脚本去......
  • 字节前端必会react面试题
    React中keys的作用是什么?Keys是React用于追踪哪些列表中元素被修改、被添加或者被移除的辅助标识。在React中渲染集合时,向每个重复的元素添加关键字对于帮助Reac......
  • 面试官:你是怎样进行react组件代码复用的
    mixinMixin设计模式Mixin(混入)是一种通过扩展收集功能的方式,它本质上是将一个对象的属性拷贝到另一个对象上面去,可以拷贝多个属性到一个对象上,为了解决代码复用问题。常......
  • 阿里前端二面必会react面试题总结
    非嵌套关系组件的通信方式?即没有任何包含关系的组件,包括兄弟组件以及不在同一个父级中的非兄弟组件。可以使用自定义事件通信(发布订阅模式)可以通过redux等进行全局状态......
  • React中组件之间是如何通信的 react的组件通信方式有哪些
    一、是什么通信指的是发送者通过某种媒体以某种格式来传递信息到收信者以达到某个目的,广义上,任何信息的传递都是通信二、如何通信?组件传递的方式有很多种,根据传送......
  • react 项目的性能优化
    react项目的性能优化有哪些?1、react模块化处理就是将react内容进行模块化划分,一个模块一个组件,react更新机制是组件重新更新2、在react项目中更新数据,不要直接将......
  • 重新捋一捋React源码之更新渲染流程
    前言前些天在看DanAbramov个人博客(推荐阅读,站在React开发者的角度去解读一些API的设计初衷和最佳实践)里的一篇文章,其重点部分的思想就是即使不使用Memo(),也可以通过组合......
  • 面试官:React怎么做性能优化
    前言最近一直在学习关于React方面的知识,并有幸正好得到一个机会将其用在了实际的项目中。所以我打算以博客的形式,将我在学习和开发(React)过程中遇到的问题记录下来。这两......