React如何区分Class和function定义的组件


本文摘自PHP中文网,作者coldplay.xixi,侵删。

React区分Class和function定义的组件方法:1、使用function定义组件,新增hook可以让function定义的组件具有局部state;2、使用class定义组件,qs第二个参数过滤掉前缀。

本教程操作环境:windows7系统、React16.8版,该方法适用于所有品牌电脑。

相关学习推荐:react视频教程

React区分Class和function定义的组件方法:

使用function定义组件

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

import React, { useState, useEffect } from "react";

import { useLocation } from "react-router-dom";

import qs from "qs"; //qs用来格式化数据

import { movieDetail } from "../../services/movies";

  

//推荐使用function定义组件,react16.8以后新增hook可以让function定义的组件具有局部state

  

export default function Detail() {

  //function定义的组件没有局部的数据,所以使用useState()获取局部数据(局部状态)

  //以下例子第一个参数表示定义的数据,第二个参数表示更改此数据要用到的方法,useState()中的参数表示定义数据的初始值

  //也就是movie={video:{}} 若要定义多个值,多次使用useState就行了

  const [movie, setMovie] = useState({

    video: {},

  });

  const [live, sertLive] = useState({}); //live={}

  //function定义的组件不能使用this.props.location来获取地址栏信息,使用useLocation()获取地址栏信息

  const location = useLocation();

  console.log(location);

  

  //function定义的组件也没有生命周期的钩子函数,我们使用useEffect来模拟生命周期,

  //参数一表示参数二依赖的内容发生改变之后触发的回调函数,如果参数二为空数组表示只执行一次(初始化执行)

  useEffect(() => {

    const query = qs.parse(location.search, {

      ignoreQueryPrefix: true, //此参数表示过滤掉前缀

    });

    //useEffect中调用异步函数如下所示

    async function fetchData() {

      // You can await here

      const result = await movieDetail(query.id);

      console.log(result);

      setMovie(result.data.data.basic);

      sertLive(result.data.data.live);

    }

    fetchData();

  }, []);

  return (

    <div>

      <img

        style={{ width: "100%", margin: "0 auto", display: "block" }}

        src={live.img}

      ></img>

      <h1>{movie.name}</h1>

      <p>{movie.story}</p>

      <video controls autoPlay src={movie.video.url}></video>

    </div>

  );

}

使用class定义组件

阅读剩余部分

相关阅读 >>

React中ref怎么用

React onsenui是什么?

React中怎么获取input的值

webstorm写React出现报错怎么办

class是什么意思?id和class有什么区别

React全家桶都有什么

css中id选择器和class选择器有何不同

React中qs是什么

一些关于React的常见面试题(分享)

React和vue的区别及优缺点是什么

更多相关阅读请进入《React》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...