react第一天

ReactDOM提供了与浏览器交互的DOM,功能如DOM渲染

ReactDOM.render(element,container[,callback])
//element是要渲染的内容
//container是要渲染内容存在的容器
//callback是渲染成功后的回调函数

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="../../EXP/JSlib/react/react.js"></script>
    <script src="../../EXP/JSlib/react/react-dom.js"></script>
    <script src="https://cdn.staticfile.org/babel-standalone/6.26.0/babel.min.js"></script>
</head>
<body>
    <div id="app"></div>
</body>
<script>

    ReactDOM.render(
        "hello world",
        document.querySelector("#app")
    )

</script>
</html>

就会在div中渲染出hello world
在这里插入图片描述
当然,还可以通过以下方式创建元素

 ReactDOM.render(
        /*
        React.createElement(type,props,children)
        */
        React.createElement("div",{id:"father"},"i am the father",
        React.createElement("p",{},"i am the son")
        ),
        document.querySelector("#app")
    )

不过上面的创建过程太过于繁琐复杂。推荐使用下面的JSX->javscript+XML

注意,要使用JSX需要加载Babel.js文件,bebel负责把JSX编译成浏览器能够识别的代码。

还需要在script标签加上 <script type="text/babel">
如下

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="../../EXP/JSlib/react/react.js"></script>
    <script src="../../EXP/JSlib/react/react-dom.js"></script>
    <script src="https://cdn.staticfile.org/babel-standalone/6.26.0/babel.min.js"></script>
</head>
<body>
    <div id="app"></div>
</body>
<script type="text/babel">

ReactDOM.render(
   <header>
        <h1>hello JSX</h1>
   </header>,
    document.querySelector("#app")
)

</script>
</html>

react中的插值表达式

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="../../EXP/JSlib/react/react.js"></script>
    <script src="../../EXP/JSlib/react/react-dom.js"></script>
    <script src="https://cdn.staticfile.org/babel-standalone/6.26.0/babel.min.js"></script>
</head>
<body>
    <div id="app">
        
    </div>
    <input type="text" id="text">
</body>
<script type="text/babel">

    let text=document.querySelector("#text")
    text.oninput=()=>{
        ReactDOM.render(
            <div>
                插值表达式:{text.value}
            </div>,
            document.querySelector("#app")
        )
    }
</script>
</html>

或者

 let fn=()=>{
        return (
            <div>firts block
                <div>second block</div>
                </div>
            
        )
    }
 
        ReactDOM.render(
            <div>
                {fn()}
            </div>,
            document.querySelector("#app")
        )

注意:插值表示中不能写入布尔值,对象都。
数字、字符串会原样输出
只能写入数组,JSX不能写循环语句for while
同时JSX中只能有一个顶层元素
JSX中的class只能写成className

如下

let arr=[1,2,3,4,5,6,7,8,9]
        ReactDOM.render(
            <div>
                {arr.map((item,index)=><p key={index}>{item}</p>)}
            </div>,
            document.querySelector("#app")
        )

如果是对象的话就需要将对象转换成数组再输出
如下

 let obj={
          a:1,
          b:2,
          c:3,
          d:4
       }
        ReactDOM.render(
            <div>
                {Object.keys(obj).map((item,index)=>{
                    return <p key={index}>item's key-{item}</p>
                })}
                {Object.values(obj).map((item,index)=>{
                    return <p key={index}>item's value-{item}</p>
                })}
            </div>,
            document.querySelector("#app")
        )
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值