博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
<react学习笔记(7)>操作DOM节点,组件传参
阅读量:5811 次
发布时间:2019-06-18

本文共 2609 字,大约阅读时间需要 8 分钟。

1. 操作DOM节点的方式

初始的效果图:

1.通过js的ID值获取DOM

class Element extends React.Component{    handleClick(){        // 通过js id 获取DOM        const ipt = document.querySelector('input');        ipt.style.background = 'hotpink';    }    render() {        return (            
) }};ReactDOM.render(
, document.querySelector('#app'));复制代码

点击后效果图:

2.通过事件对象e获取DOM

class Element extends React.Component{    handleClick(e){        // 2. 事件对象        const {target} = e;        console.log(target);        target.style.background = 'skyblue';    }    render() {        return (            
) }};ReactDOM.render(
, document.querySelector('#app'));复制代码

点击后效果图:

3. 通过 ref 属性操作DOM

class Element extends React.Component{    handleClick(){        // 3. 通过 ref 属性操作Dom        console.log( this );        console.log( this.refs );        console.log( this.refs.ipt );        this.refs.ipt.style.background = 'yellow';    }    render() {        return (            
) }};ReactDOM.render(
, document.querySelector('#app'));复制代码

ref属性的值最好写成回调函数的形式: ref={itemDiv=>this._div=itemDiv}

点击后效果图:

4. 通过 ReactDOM.findDOMNode 属性操作DOM

class Element extends React.Component{    handleClick(){        // 4. findDOMNode        const ipt = document.querySelector('input');        ReactDOM.findDOMNode(ipt).style.background = 'purple';    }    render() {        return (            
) }};ReactDOM.render(
, document.querySelector('#app'));复制代码

点击后效果图:

注:在使用 ReactDOM.findDOMNode时,当参数是DOM时,返回值是此DOM;

当参数是Component时,获取的就是Component的render中dom。


2.组件传参

组件两个重要概念: state,props

state(状态):负责用户界面
props(属性):组件传值通讯

demo

//List子组件class List extends React.Component{    render() {        console.log( this.props );        return (            

{this.props.abc}

{this.props.data}

{ // 子组件去调用父组件的方法 // 子组件向父组件通讯 }
); }};//Element父组件class Element extends React.Component{ state = { data: '父组件的数据' } getData(xyz){ console.log('getData函数',xyz) } render() { return (

组件

) }};ReactDOM.render(
, document.querySelector('#app'));复制代码

效果图:

转载于:https://juejin.im/post/5c209096e51d4526262960b9

你可能感兴趣的文章
Android状态栏实现沉浸式模式
查看>>
让你的APP实现即时聊天功能
查看>>
iOS 绝对路径和相对路径
查看>>
使用Openfiler搭建ISCSI网络存储
查看>>
应用新安全组 - 每天5分钟玩转 OpenStack(116)
查看>>
iOS - UIViewController
查看>>
IntPtr 转 string
查看>>
学生名单
查看>>
(转) 多模态机器翻译
查看>>
【官方文档】Nginx负载均衡学习笔记(三) TCP和UDP负载平衡官方参考文档
查看>>
矩阵常用归一化
查看>>
Oracle常用函数总结
查看>>
【聚能聊有奖话题】Boring隧道掘进机完成首段挖掘,离未来交通还有多远?
查看>>
CMake 手册详解(二十)
查看>>
嵌入式 busybox自带的tftp、telnet、ftp服务器
查看>>
USNews大学排名遭美国计算机研究学会怒怼,指排名荒谬要求撤回
查看>>
struts1——静态ActionForm与动态ActionForm
查看>>
七大关键数据 移动安全迎来历史转折点
查看>>
在AngularJS中学习javascript的new function意义及this作用域的生成过程
查看>>
盘点物联网网关现有联网技术及应用场景
查看>>