2.新建子组件、jsx语法、绑定数据、class、style、引入图片、遍历数据

本接内容:创建组件、jsx语法、绑定数据、绑定对象、绑定属性

一、创建组件示例

注意 :新建组件名首字母大写

1. 创建子组件

@file(Home.js)

import React, { Component } from 'react';
class Home extends Component {
    constructor() {
        super()
        // 定义数据
        this.state = {
            name: '张三',
        }
    }
    render() {
        return (
            <div>
                <div>我是首页</div>
                <div>第二行内容:姓名:{this.state.name}</div>
            </div>
        )
    }
}
export default Home;

2. 根组件中引入子组件

@file(App.js)

import logo from './assets/images/logo.svg';
import './assets/css/App.css';

// 引入组件
import Home from './components/Home';

function App() {
    return (
        <div className="App">
            你好,react-根组件
            <Home></Home>
        </div>
    );
}

export default App;

二、绑定属性

0.注意

1.class换成className
2.style
3.label for换成htmlFor

1.普通属性

<div title={this.state.name}>绑定属性</div>

2.绑定class名

1.正常模式

@file(index.css)
.red{color: red;}
@file(js)
import '../assets/css/index.css';

<div className='red'>绑定属性-class:来自文件中的class名</div>

2.绑定js文件中的变量名

class Home extends Component {
    constructor(props) {
        super(props)
        this.state = {
            txtcolor: 'red', // 1.js变量
        }
    }
    render() {
        return (
            <div>
                {/* 绑定js变量名 */}
                <div className={this.state.txtcolor}>绑定属性-class:取js数据的变量名</div>
            </div>
        )
    }
}

3.style

写法1

<div style={{'color':'red', 'fontSize': '20px'}}>行内样式写法</div>

写法2:绑定变量

this.state = {
    mystyle: {
        color: 'red',
        fontSize: '32px'
    }
}

// ...
<div style={this.state.mystyle}>行内样式写法-变量</div>

4.label for

<label htmlFor="name">姓名:</label>
<input id='name' type="text"/>

三、react引入图片的几种方式

1. img-import

import logo from '../assets/images/1.jpg';
<img src={logo} alt=""/> 

2. img-require-暂时失败

<img src={require('../assets/images/1.jpg')} />

3.背景图

// css
.backimg{width: 200px;height: 200px;background: pink url('../images/1.jpg');}
// html
<div className="backimg">背景图</div>

4.img-网络图片

<img src="https://gimg2.baidu.com/jiche.png" />

四、循环遍历数据

注意:循环数据要加key

1.方式1

class News extends React.Component {
    constructor(props){
        this.state={
            arr: [{name: '张1',age: 20}, {name: '张2',age: 20}, {name: '张3',age: 20}]
        }
    }

    render(){
        let list = this.state.arr.map((val,key) => {
            return(
                <div key={key}>
                    <span>姓名:{val.name},</span>
                    <span>年龄:{val.age}</span>
                </div>
            )
        })
        return(
            <div className="newspage">
                <div>
                    {list}
                </div>
            </div>
        )
    }
}

2.方式2

class News extends React.Component {
    constructor(props){
        this.state={
            arr: [{name: '张1',age: 20}, {name: '张2',age: 20}, {name: '张3',age: 20}]
        }
    }

    render(){
        return(
            <div className="newspage">
                <div>
                    {this.state.arr.map((value,key) => {
                        return(
                            <div>
                                <span key={key}>{value.name},</span>
                                <span>年龄:{value.age}</span>
                            </div>
                        )
                    })}
                </div>
            </div>
        )
    }
}

五、react中解析html代码

作用:详情页取到html的文本,解析到页面

<div dangerouslySetInnerHTML={{__html:this.state.data.content}}></div>

十、冷知识

super

子类必须在constructor中调用super,否则新建实例会报错,因为子类没有自己的this对象,而是继承父类的this对象。如果不调用super,子类得不到this

class Person {
    constructor(name) {
        this.name = name;
    }
}
class Student extends Person{
    constructor(name, age){
        super();
        this.age = age;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值