React 实用基础合集(1)

简介: React 实用基础合集(1)

1、JSX 主要注意点

1、react语法

使用 {xxx这里面写表达式,可理解为动态内容,常规 判断或者 三元表达式}
   vue 使用 {{xxx这里放内容}} 这个叫vue模版
复制代码

2、react样式

写class 使用 className="xxx写这里"
        动态的  className = {this.state.class1}
    写style={{xx:"xx"}} 里面 大括号 可以拿出来 作为整体 然后再传入
      静态 怎么写 style="color: 'red'"
复制代码

3、加载组件

1、引入组件
    2、使用 <List xxx/> 传递属性 
        需要注意的是 react 组件命名开头必须为大写的 
复制代码

4、判断条件和渲染列表 * 主要涉及

网络异常,图片无法展示
|

1、判断条件
if(xxx){}else{xxx}
2、三元
{ a ? b : c }
3、&& 
{a && b}
2、列表渲染
复制代码

网络异常,图片无法展示
|

  • 注意 map 返回新数组 是什么意思 ?
    不会更改元数组 内容
    返回的内容由map后的箭头函数 确定 map((item,index) => {xxx})
  • 注意 map 需要 使用 key(需要为独一的值)

2、为何事件需要bind this ?

1、需要说这几件事情

网络异常,图片无法展示
|

2、注意点

1、react 事件写法 onXxxxx   比如 onClick={this.handle}  onChange={this.change1} 
2、绑定 this 在 constructor 里面写 更好 ,因为 只执行一次 ,如果绑定在按钮上会多次触发
3、绑定的函数 当前更加推荐的写法 这样 不用在bind绑定 this
复制代码

网络异常,图片无法展示
|

* 关于 react 事件 异常重要的几件事情

1、event 是 react 合成的事件 非原生事件
2、虽为合成事件  但具备所有原生事件的能力
3、event.nativeEvent 是原生事件对象PointerEvent
4、事件被绑定到 document 上(16)
复制代码
  • 写个例子说明这个事情
import React from "react";
function handleClick(e) {
  e.preventDefault(); // 阻止默认事件
  e.stopPropagation(); // 阻止冒泡
  console.log("target", e.target); //a 标签
  //   console.log("current target", e.current.target); // TypeError: Cannot read property 'target' of undefined
  console.log("nativeEvent", e.nativeEvent); // PointerEvent{xxx}
  console.log("nativeEvent target", e.nativeEvent.target); // a标签
  console.log("nativeEvent current target", e.nativeEvent.current.target); // Cannot read property 'target' of undefined
}
function Event() {
  return (
    <a href="www.baidu.com" onClick={handleClick}>
      clike me
    </a>
  );
}
export default Event;
复制代码
  • 传递参数 在 bind(xxx,xxx,xxx) 默认传递的是 event
  • 示意图

网络异常,图片无法展示
|

3、表单相关内容

1、主要部分

网络异常,图片无法展示
|

import React, { Component } from "react";
class Handle extends Component {
  constructor(props) {
    super(props);
    this.state = {
      name: "jack",
    };
  }
  handleChange = (e) => {
    this.setState({
      name: e.target.value,
    });
  };
  render() {
    return (
      <div>
        <p>{this.state.name}</p>
        <label htmlFor="inputValue">姓名:</label>
        <input
          id="inputValue"
          value={this.state.name}
          onChange={this.handleChange}
        ></input>
      </div>
    );
  }
}
export default Handle;
复制代码
  • 实现效果 就是 v-module vue里面的
  • 受控 组件 受 state 控制

网络异常,图片无法展示
|

网络异常,图片无法展示
|

  • 实现 效果展示

网络异常,图片无法展示
|

4、父子组件通讯

1、概述

网络异常,图片无法展示
|

2、重要的内容

1、状态(数据) 提升  将重要的数据部分 放到 最上层 父组件 管理, 子组件 只需要进行渲染 , 父组件传递什么 子组件 就渲染什么

* 简单来讲 就是把 state里面定义的数据 放在最上层组件内

3、实践一下 写一个 ToDoList_1(因为在我这个项目中定义过 ToDoList)

import React, { Component } from "react";
import PropTypes from "prop-types";
class Input extends Component {
  constructor(props) {
    super(props);
    this.state = {};
  }
  onChange = (e) => {
    this.setState({
      title: e.target.value,
    });
  };
  onSubmit = () => {
    const { submit } = this.props;
    submit(this.state.title);
  };
  render() {
    return (
      <div>
        <input value={this.state.title} onChange={this.onChange}></input>
        <button onClick={this.onSubmit}>提交</button>
      </div>
    );
  }
}
//props 类型检查
Input.propTypes = {
  submit: PropTypes.func.isRequired,
};
function List(props) {
  const { list } = props;
  return (
    <ul>
      {list.map((item, index) => (
        <li key={item.id}>{item.title}</li>
      ))}
    </ul>
  );
}
//props 类型检查
List.propTypes = {
  list: PropTypes.arrayOf(PropTypes.object).isRequired,
};
class ToDoList_1 extends Component {
  constructor(props) {
    super(props);
    this.state = {
      list: [
        {
          id: 1,
          title: "text1",
        },
        {
          id: 2,
          title: "text2",
        },
      ],
    };
  }
  submit = (title) => {
    this.setState({
      list: this.state.list.concat({
        id: `id-${Date.now()}`,
        title,
      }),
    });
  };
  render() {
    return (
      <div>
        <Input submit={this.submit} />
        <List list={this.state.list} />
      </div>
    );
  }
}
export default ToDoList_1;
复制代码
  • 实现效果 非常nice

网络异常,图片无法展示
|



相关文章
|
XML 前端开发 JavaScript
React 基础和 JSX 的使用
React 基础和 JSX 的使用
react+umi+dva+ts基础基础使用
react+umi+dva+ts基础基础使用
|
前端开发
React 实用基础合集(2)
React 实用基础合集(2)
67 0
好客租房90-react路由基础学习目标
好客租房90-react路由基础学习目标
70 0
好客租房90-react路由基础学习目标
好客租房99-react路由基础总结
好客租房99-react路由基础总结
91 0
好客租房99-react路由基础总结
|
前端开发
好客租房45-react组件基础综合案例-6边界问题
好客租房45-react组件基础综合案例-6边界问题
71 0
好客租房45-react组件基础综合案例-6边界问题
|
前端开发
好客租房44-react组件基础综合案例-5发表评论-1
好客租房44-react组件基础综合案例-5发表评论-1
84 0
|
前端开发
好客租房43-react组件基础综合案例-4获取评论信息
好客租房43-react组件基础综合案例-4获取评论信息
80 0
|
前端开发
好客租房42-react组件基础综合案例-渲染列表无数据并优化
好客租房42-react组件基础综合案例-渲染列表无数据并优化
86 0
好客租房42-react组件基础综合案例-渲染列表无数据并优化
|
前端开发
好客租房41-react组件基础综合案例-渲染列表数据
好客租房41-react组件基础综合案例-渲染列表数据
85 0
好客租房41-react组件基础综合案例-渲染列表数据