最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 【React学习笔记】jsx & create-react-app脚手架

    正文概述 掘金(明月何时赵我还)   2021-01-09   487

    CDN引用

    //开发环境 16是版本号
    <script crossorigin src="https://unpkg.com/react@16/umd/react.development.js"></script>
    <script crossorigin src="https://unpkg.com/react-dom@16/umd/react-dom.development.js"></script>
    //生产环境
    <script crossorigin src="https://unpkg.com/react@16/umd/react.production.min.js"></script>
    <script crossorigin src="https://unpkg.com/react-dom@16/umd/react-dom.production.min.js"></script>
    

    React和ReactDom

    React只用来生成虚拟Dom,ReactDom用来将虚拟Dom转换成真实Dom元素。

    //三个参数:
    // type -- 类型(组件名|标签名)
    // props -- 属性值 (null||{})
    // children -- 子节点,包括文本节点(多选参数)
    const el = React.createElement("div", { id: "test" }, "hello world");
    const root = document.querySelector("#root");
    //三个参数:
    // vDOM -- 虚拟DOM
    // container -- 挂载节点(容器,即要挂载到的节点)
    // callback -- 回调函数(可选参数)
    ReactDOM.render(el, root, function() {
        console.log("成功!");
    });
    

    JSX

    定义

    jsx的简单使用

    需要引入babel.js

    <script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script>
    

    同时设置type为"text/babel"

    <script src="youjs.js" type="text/babel"></script>
    
    const header = <h1>hello,world</h1>
    ReactDOM.render(
      header,
      document.querySelector("#root"),
      ()=>{
        console.log("构建完成")
      }
    );
    

    JSX中的插值表达式

    const name = "xiaoming"
    const element = <h1>hello,{name}</h1>
    

    {name}即为插值表达式,jsx用花括号来解析js表达式,括号里只能是表达式,不能是语句!!!

    表达式直白来说是会有返回值的代码,如变量运算符函数调用,而语句如if、while等不会产生返回值。

    表达式的返回值必须是ReactElement

    • React构建的虚拟DOM(狭义上的ReactElement)

    • string|number

    • boolean|null|undefined|Symbol

    • 数组->最常用的列表方法map

    • 注释->{/* something */}

    • 函数

    不同数据类型在插值的表现

    • 基础类型
    1. string、number返回原始值
    2. undefined、null、boolean、Symbol输出是会被忽略
    • 复杂类型
    1. Array,去掉逗号后直接输出,如{[1,2,3,4]}输出的是 1234
    2. Object,如果是ReactElement返回,如果是普通对象(包括函数)不能作为内容输出

    注意事项

    1. jsx中class需要写为className,style值接收一个对象
    2. jsx大小写敏感,标签名小写,组件名首字母大写
    3. jsx的所有标签都需要闭合
    4. jsx必须有一个顶层,且只有一个顶层父级
    5. jsx列表输出时必须添加key值

    其他

    1. React17之后,如果模块中只用到了JSX,没有使用React其他方法则组件不再需要引入React
    2. <Fragment></Fragment>在React17之后可简写为<></>

    create-react-app

    使用

    //下载
    npm i -g create-react-app
    //创建项目
    npx create-react-app myapp
    

    组件

    具有一定独立功能的数据与方法的封装,对外暴露接口,有利于代码的复用,且不用担心冲突问题。

    类式组件

    • 组件类必须继承 React.Component
    • 组件类必须有 render 方法

    函数式组件

    • 函数的名称就是组件的名称
    • 函数的返回值就是组件要渲染的内容

    props和state

    state 的主要作用是用于组件保存、控制、修改自己的可变状态,在组件内部进行初始化,也可以在组件内部进行修改,但是组件外部不能修改组件的 state

    props 的主要作用是让使用该组件的父组件可以传入参数来配置该组件,它是外部传进来的配置参数,组件内部无法控制也无法修改

    state 和 props 都可以决定组件的外观和显示状态。通常,props 做为不变数据或者初始化数据传递给组件,可变状态使用 state

    事件

    默认情况下,事件处理函数的this值时undefined!!!

    解决方案:箭头函数bind

    插件

    vscode-styled-jsx: jsx语法高亮

    ES7 React/Redux/GraphQL/React-Native snippets:提供各种简写


    起源地下载网 » 【React学习笔记】jsx & create-react-app脚手架

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元