IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> 今天的码农女孩学习了关于react子父组件传值的知识,并做了小练习 -> 正文阅读

[JavaScript知识库]今天的码农女孩学习了关于react子父组件传值的知识,并做了小练习

子父组件传值
?? ? ? 父组件给子组件传值:父组件下定义属性并赋值,子组件里用prop接收,接收的是对象类型
? ? ? ? ? ?//es5写法父组件传值给子组件
? ? ??? ? ? function App(prop){//子
? ? ? ? ?? ? ? ? ? ?return (<div>
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? app {prop.name1}-{prop.age}
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? </div>)
? ? ? ? ? ? ? ? ? ?}
? ? ? ? ? ? ? ? ?ReactDOM.render(//父
? ? ? ? ? ? ? ? ? ? ? ? ? ? (<div>
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?react
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?<App name1="李四" age="23"/>
? ? ? ? ? ? ? ? ? ? ? ? ? </div>),
? ? ? ? ? ? ? ? ? ? ? ? ?document.getElementById("app")
? ? ? ? ? ? ? ? ? )
?? ?
? ? ? ? ? ? ? ?//es6写法父组件传值给子组件
? ? ? ? ? ? ? ?class App extends React.Component{//子
? ? ? ? ? ? ? ? ? ? ?render(){
? ? ? ? ? ? ? ? ? ? ? ? ? ? return <h1>es6 {this.prop.name1}-{this.prop.age}</h1>
? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ?}
? ? ? ? ? ? ? ?ReactDOM.render(//父
? ? ? ? ? ? ? ? ? ? ? ? ?(<div>
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?react
? ? ? ? ? ? ? ? ? ? ? ? ? ? <App name1="李四" age="23"/>
? ? ? ? ? ? ? ? ? ? ? ?</div>),
? ? ? ? ? ? ? ? ? ? ? ?document.getElementById("app")
? ? ? ? ? ? ? ? )
?? ?子组件向父组件传值:子组件定义事件调用自己对象下的函数,在函数里通过调用绑定的属性,在属性下定义父类的函数名称进行调用
? ? ? ? ? ? ? //es6写法子组件给父组件传值
? ? ? ? ? ? ? ?class App extends React.Component{//父
? ? ? ? ? ? ? ? ? ? ? fun1(aa){
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?alert("父类函数被调用了"+aa)
? ? ? ? ? ? ? ?}
? ? ? ? ? ? ? ? ? ? ?render(){
? ? ? ? ? ? ? ? ? ? ? ? ? ?return (<div><Header age="23" foo={this.fun1}></Header></div>)
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ?}
? ? ? ? ? ? ? class Header extends React.Component{//子
? ? ? ? ? ? ? ? ? ? ? ? fun(){
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?this.props.foo("asd")
? ? ? ? ? ? ? ? ? ? ? ? ?}
? ? ? ? ? ? ? ? ? ? ? ?render(){
? ? ? ? ? ? ? ? ? ? ? ? ? return (<div><h1 onClick={this.fun}>点击我</h1></div>)
? ? ? ? ? ? ? ? ? ? ? ?}
? ? ? ? ? ? ? ? ?}
? ? ? ? ? ? ? ? ReactDOM.render(
? ? ? ? ? ? ? ? ? ? ? ? (<div>
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? react
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?<App name1="李四" age="23"/>
? ? ? ? ? ? ? ? ? ? ? ?</div>),
? ? ? ? ? ? ? ? ? ? ? ?document.getElementById("app")
? ? ? ? ? ? ? ? )

练习:组件嵌套
? ?? ?父类组件wrap,子类组件header和footer
? ?? ?父类组件下定义两个变量
? ? ??? ?第一个变量图片地址,传给header,imgurl:"img/p1.jpg"?? ?
? ? ??? ?第二个变量传给底部显示在不同标签里,需要遍历
?? ?arr:[ "地址:黑龙江省哈尔滨市",
?? ?"电话:0451-89765943",
?? ?"@2019 HaiKang 黑ICP备06004322号"]

代码如下:

<body>
    <div id="app"></div>
    <script type="text/babel">
        //方法1
        var arr=["地址:黑龙江省哈尔滨市",
	            "电话:0451-89765943",
	            "@2019 HaiKang 黑ICP备06004322号"
            ]
        var arrs=arr.map(function(value,index,arr){
            return value
        })
        function Wrap(){
        return (
                <div>
                    <Header imgurl="img/a.png"></Header>
                    <Footer array={arrs}></Footer>
                </div>
            )
        }
        function Header(prop){
            return (
                <img src={prop.imgurl}/>
            )
        }
        function Footer(prop){
            return(
                <p>{prop.array}</p>
            )
        }
        ReactDOM.render(
            (<div><Wrap/></div>),
            document.getElementById("app")
        )

        // 方法2
        class App extends React.Component{
            constructor(props){
                super(props)
                this.state={
                    imgurl:"img/a.png",
                    arr:["地址:黑龙江省哈尔滨市",
                            "电话:0451-89765943",
                            "@2019 HaiKang 黑ICP备06004322号"
                        ]
                }
            }
            render(){
                return(
                    <div>
                        <Header url={this.state.imgurl} />
                        <Footer txt={this.state.arr}/>
                    </div>
                )
            }
        }
        class Header extends  React.Component{
            constructor(props){
                super(props)
            }
            render(){
                return (
                    <div>
                        <img src={this.props.url} />
                    </div>
                )
            }
        }
        class Footer extends  React.Component{
            constructor(props){
                super(props)
            }
            render(){
                var list=this.props.txt.map(function(value){
                    return <p>{value}</p>
                })
                return (
                    <div>
                        {list}
                    </div>
                )
            }
        }
        ReactDOM.render(
            (<div><App/></div>),
            document.getElementById("app")
        )
    </script>
</body>
</html>

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-07-04 22:45:33  更:2022-07-04 22:49:32 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 13:44:14-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码