JSX语法入门和无状态组件的传值

简介: 本节给大家介绍JSX语法入门和无状态组件的传值

@[toc]

前言

上篇给大家简单介绍了React,本篇文章开始就带大家由浅入深学习React,开始体验React与众不同的语法。
如果之前学习过Vue的同学,建议暂时忘掉Vue语法,不然对于Vue重度爱好者来说,写React真的会很不习惯,难以理解它的语法操作,不过熟悉之后,你也会发现React的魅力
在这里插入图片描述

React初体验

先在页面引入react相关的库

<!-- react底层核心库 -->
<script src="https://unpkg.com/react@17/umd/react.development.js"></script>

<!-- react操作DOM的核心库,类似于JQuery -->
<script src="https://unpkg.com/react-dom@17/umd/react-dom.development.js"></script>

<!-- 用于解析ES6语法 -->
<script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script>

然后在body中开始写代码:
首先添加一个空的 < div>标签作为标记你想要用 React 显示内容的位置,并加上id
然后在script中定义div内容,并用react固定的语法ReactDOM.render进行输出,并展示在id为root2的盒子位置

<body>
    <div id="root2"></div>
    <script type="text/babel">
    // ES6方法需要引入babel,必须要使用type=text/babel
    // Babel会把JSX转译为一个名为React.createElement()函数调用
        let div = <div><h1>hello world</h1></div>
        ReactDOM.render(
            div,
            document.getElementById('root2')
        )
    </script>
</body>

效果图:这样就运行成功啦~
在这里插入图片描述

元素渲染

获取当前的时间渲染出来,后边的代码关键部分我都在里面写出了注释

<div id="root"></div>
<script type='text/babel'>
    function tick() {
        // 在React里面,组件时由元素构成的
        let time = new Date().toLocaleTimeString()
        let template = <div>
            <h1>Hello React</h1>
            <h2>现在是:{time}</h2>
        </div>
        ReactDOM.render(
            template,
            document.getElementById('root')
        )
    }
    // tick()
    // React元素是不可变对象,一旦被创建,你就无法更改它的子元素或者属性
    setInterval(tick, 1000)
    // 它只会更新它需要更新的部分,把tick函数理解为模型,页面内容理解为视图,模型更改就会直接驱动视图发生改变
</script>

运行截图:

在这里插入图片描述

条件判断

这里是三种写法,第一个是直接用三目表达式,第二种是使用函数组件返回对应的值,第三种是在函数组件中进行判断然后返回值

<div id="root"></div>
<script type='text/babel'>
    let flag = false
    let login = <div>登录</div>
    let logout = <div>登出</div>
    ReactDOM.render(
        flag ? login : logout,
        document.getElementById('root')
    )
</script>

<div id="root2"></div>
<script type="text/babel">
    function App() {
        let flag = true
        let login = <div>登录</div>
        let logout = <div>登出</div>
        return flag ? login : logout
    }
    ReactDOM.render(
        <App />,
        document.getElementById('root2')
    )
</script>

<div id="root3"></div>
<script type="text/babel">
    let state = true
    function Apps() {
        if (state) {
            return <div>我是登录页面</div>
        } else {
            return <div>我是登出页面</div>
        }
    }
    ReactDOM.render(<Apps />, document.getElementById('root3'))
</script>

运行截图:

在这里插入图片描述

无状态组件

在react中组件按类别可以分为有状态组件 和 无状态组件,先来讲无状态组件
如下

<div id="root"></div>
<script type='text/babel'>
    // 函数式组件(无状态组件)
    function Hello() {
        return <div>
            <h1>姓名:Hello React!</h1>
            <h1>年龄:Hello React!</h1>
            <h1>性别:Hello React!</h1>
            <h1>地址:Hello React!</h1>
        </div>
    }
    ReactDOM.render(
        <Hello/>,
        document.getElementById('root')
    )
</script>

运行截图:
在这里插入图片描述

无状态组件props传值

在无状态组件中我们使用props进行传值,如下

<div id="root"></div>
<script type='text/babel'>
    // 函数式组件(无状态组件)
    // 传值的时候,一定要记得括号中写上props
    function Hello(props) {
        // 在组件里可以通过props来获取我们传递的值
        console.log(props)
        return <div>
            <h1>姓名:{props.name}!</h1>
            <h1>年龄:{props.age}!</h1>
            <h1>性别:{props.sex}!</h1>
            <h1>地址:{props.address}!</h1>
        </div>
    }
    ReactDOM.render(
    //需要传什么值,直接在组件上写入
        <Hello name='beiyu' age='8' sex='boy' address='Wu Han'/>,
        document.getElementById('root')
    )
</script>

运行截图:

在这里插入图片描述

最后

本期给大家介绍了JSX语法以及无状态组件,下节给大家介绍react中的有状态组件和一些修改值的操作~~

欢迎关注,持续更新!!>>>>>

相关文章
|
3月前
|
JavaScript API 对象存储
|
5月前
|
JavaScript
Vue模板语法、属性绑定、条件渲染的学习
Vue模板语法强调插值表达式需返回结果以显示。避免问题的方法是将逻辑处理放在JS中,不在模板内实现。Vue属性绑定使用`v-bind`(可简写为:)动态绑定类或ID,当值为null或undefined时自动移除。支持布尔类型和动态绑定多值。条件渲染包括`v-if`、`v-else`、`v-else-if`和`v-show`,其中`v-if`用于真值时渲染,`v-show`按条件显示,两者的区别在于频繁切换场景和渲染方式。
|
JavaScript 前端开发 C++
58Vue - Props(字面量语法 vs 动态语法)
58Vue - Props(字面量语法 vs 动态语法)
46 0
|
11月前
|
JavaScript
vue模板语法上集->插值,指令,过滤器,计算属性&监听属性,vue购物车
vue模板语法上集->插值,指令,过滤器,计算属性&监听属性,vue购物车
43 0
|
JavaScript
vue中函数有几种定义方式
vue中函数有几种定义方式
168 0
|
JavaScript 前端开发
Vue----模板渲染语法中使用JavaScript表达式
Vue----模板渲染语法中使用JavaScript表达式
|
JavaScript
Vue setup语法糖关于父子传参不同之处
Vue setup语法糖关于父子传参不同之处
|
前端开发 JavaScript 数据处理
Vue和React对比学习之条件判断、循环、计算属性、属性监听
条件判断、循环、计算属性、属性监听
323 0
|
前端开发 JavaScript
react组件进阶 属性类型检查
我们从名字上就可以知道,静态类型是发生在代码的编写阶段,不发生在代码的运行阶段。所以我们在使用的过程中,就可以及时的提示我们代码是否存在问题等,这个的效果就和 eslint 是一样的。
react组件进阶 属性类型检查