初识React之组件

这篇博客介绍了React Native的基础知识,通过四个逐步进阶的demo,包括打印Hello React、定义组件类、组件样式以及复合组件,展示了如何在移动端进行跨平台开发。在第一个demo中,讲解了ReactDOM.render的基本用法。后续的demo详细阐述了组件的创建和样式设置,强调了React中样式的特性和与HTML的不同。最后,讨论了如何组合组件并传递数据。
摘要由CSDN通过智能技术生成

移动端跨平台开发,从零开始学习React Native。

第一个demo:打印Hello React

一、 知识点

  1. 需要将react的框架导入到项目中,注意browser.min.js也要导入
  2. type=“text/babel”
  3. ReactDOM.render是React的最基本方法用于将模板转为HTML语言,并插入指定的DOM节点。ReactDOM.render(template,targetDOM),该方法接收两个参数:第一个是创建的模板,多个dom元素外层需使用一个标签进行包裹,如<div>;第二个参数是插入该模板的目标位置。
  4. 传入变量的话用{}包裹

二、demo代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>React</title>
    <script src="react/react.js"></script>
    <script src="react/react-dom.js"></script>
    <script src="react/browser.min.js"></script>

</head>
<body>
<div id="Hello"></div>

</body>


<script type="text/babel">
    var hName = "Hello React!";
    ReactDOM.render(
            //死数据
//            <h1>Hello React!</h1>,
// 变量用{}包裹
            <h1>{hName}</h1>,
            document.getElementById('Hello')
    )
</script>

</html>

第二个demo:定义组件类

一、知识点

  1. 定义组件用React.createClass
  2. 用this.props来做简单的数据传递
  3. 组件第一个字母大写采用驼峰式命名

二、demo代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>React</title>
    <script src="react/react.js"></script>
    <script src="react/react-dom.js"></script>
    <script src="react/browser.min.js"></script>

</head>
<body>
<div id="Hello"></div>

</body>

<script type="text/babel">

    //定义一个HelloMessage组件
    var HelloMessage = React.createClass({
        render: function(){
            return <h1>Hello {this.props.hName}!</h1>;
        }
    });

    ReactDOM.render(
            <HelloMessage hName="React"/>,
            document.getElementById('Hello')
    )
</script>

</html>

第三个demo:组件的样式

一、知识点

  1. 三种样式:内联样式、对象样式、选择器样式。内联样式和对象样式类似,选择器样式和html相似
  2. 注意react样式和html样式的区别:
  • html5以;结尾,React以,结尾
  • HTML5中key、value都不加引号;React属于JavaScript对象,key的名字不能出现-,需要使用驼峰式命名。如果value为字符串,需要加引号
  • HTML5中,value如果是数字,需要带单位,React中不需要带单位
  1. 调用选择器样式,不能直接定义class而要用className,因为class是javascript中的保留字

二、demo代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>React</title>
    <script src="react/react.js"></script>
    <script src="react/react-dom.js"></script>
    <script src="react/browser.min.js"></script>

    <!-- 选择器样式-->
    <style>
        .pStyle{
            font-size:15px;
            color: blue;
        }
    </style>


</head>
<body>
<div id="Hello"></div>

</body>


<script type="text/babel">
    //对象样式
    var hStyle = {
        backgroundColor:"gray",
        fontSize:18,
        color:"red"
    };

    var ShowMessage = React.createClass({
       render:function(){
          return(
           //内联样式
           <div style={{backgroundColor:"yellow",borderColor:"black",borderWidth:5,borderStyle:"solid"}}>
                <h1 style={hStyle}>{this.props.hName}</h1>
                <p className="pStyle">{this.props.pName}</p>
           </div>
           );
       }
    });

    ReactDOM.render(
            <ShowMessage hName="您好" pName="React" />,
            document.getElementById('Hello')
    )
</script>

</html>

第四个demo:复合组件

一、知识点

  1. 简单的将两个组件组合在一起。(数据其实还是死的,怎么传活数据需要用props传值,下一篇介绍)

二、demo代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>React</title>
    <script src="react/react.js"></script>
    <script src="react/react-dom.js"></script>
    <script src="react/browser.min.js"></script>

</head>
<body>
<div id="Hello"></div>

</body>


<script type="text/babel">

    //功能:输出网站的名字和网址,网址可点击
    var WebName = React.createClass({
       render:function(){
           return <h1>百度网址</h1>;
       }
    });

    var WebUrl = React.createClass({
       render:function(){
           return <a href="http://www.baidu.com">http://www.baidu.com</a>;
       }
    });

    var WebShow = React.createClass({
       render:function(){
           return (
                   <div>
                           <WebName />
                           <WebUrl />
                   </div>
           );
       }
    });

    ReactDOM.render(
            <WebShow />,
            document.getElementById('Hello')
    )
</script>

</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值