React - 组件:函数组件
<p>目录:</p><div class="cnblogs_code">
<pre> <span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">. 组件名字首字母一定是大写的
</span><span style="color: rgba(128, 0, 128, 1)">2</span><span style="color: rgba(0, 0, 0, 1)">. 返回一个jsx
</span><span style="color: rgba(128, 0, 128, 1)">3</span><span style="color: rgba(0, 0, 0, 1)">. jsx依赖React,所以组件内部需要引入React
</span><span style="color: rgba(128, 0, 128, 1)">4</span><span style="color: rgba(0, 0, 0, 1)">. 组件传参
a. 传递. </span><Component list={ arrData }><Component><span style="color: rgba(0, 0, 0, 1)">
b. 接收. function Component( props ){...}
c. 使用. </span><span style="color: rgba(0, 0, 255, 1)">const</span> { list } =<span style="color: rgba(0, 0, 0, 1)"> props,list就是参数数据
</span><span style="color: rgba(128, 0, 128, 1)">5</span><span style="color: rgba(0, 0, 0, 1)">. 缺点:【无状态组件】只能实现很简单的视图展示功能,没有自己的内容数据、没有状态,没有逻辑处理,【没有this】,【没有生命周期】。
</span><span style="color: rgba(128, 0, 128, 1)">6</span>. <span style="color: rgba(128, 0, 128, 1)">16</span><span style="color: rgba(0, 0, 0, 1)">.7以后版本的react有状态和钩子函数提供使用。不过版本过新不推荐用
内部不用render函数,会自动把return返回结果当做render返回结果【见类组件的必须要求】</span></pre>
</div>
<h2>js文件中的函数组件:</h2>
<p>首字母大写、有返回jsx的函数组件</p>
<p><img src="https://img2018.cnblogs.com/blog/956663/201911/956663-20191124154433592-1242860915.png" alt="" width="461" height="174"></p>
<p> </p>
<p>也可以直接调用函数,实现函数组件引用。</p>
<p><img src="https://img2018.cnblogs.com/blog/956663/201911/956663-20191124154438857-1065917946.png" alt="" width="522" height="185"></p>
<p> </p>
<p>函数组件里可以返回一个字符串:</p>
<p><img src="https://img2018.cnblogs.com/blog/956663/201911/956663-20191124154452215-1693117346.png" alt="" width="424" height="165"></p>
<p> </p>
<p>但是没有返回值就会报错:</p>
<p><img src="https://img2018.cnblogs.com/blog/956663/201911/956663-20191124154501041-662561588.png" alt="" width="642" height="54"></p>
<p> </p>
<p>组件之间写内容不会展示出来:</p>
<p><img src="https://img2018.cnblogs.com/blog/956663/201911/956663-20191124154512991-1648604673.png" alt="" width="363" height="66"></p>
<p> </p>
<p>组件身上写className没用:</p>
<p><img src="https://img2018.cnblogs.com/blog/956663/201911/956663-20191124154520622-1815708683.png" alt="" width="469" height="31"></p>
<p> </p>
<p>渲染的结果如下:没有组件中的内容,也没有class类名</p>
<p> <img src="https://img2018.cnblogs.com/blog/956663/201911/956663-20191124154541481-870376461.png" alt="" width="350" height="43"></p>
<p> </p>
<p> </p>
<h2>独立写在js里的函数组件:</h2>
<p>必须引入React才能使用、导出函数本身。代码如下</p>
<p><img src="https://img2018.cnblogs.com/blog/956663/201911/956663-20191124154642209-707328778.png" alt="" width="569" height="571"></p>
<p> </p>
<p> </p>
<h2>组件传参:</h2>
<p><strong>传入 - 属性传参</strong></p>
<p><img src="https://img2018.cnblogs.com/blog/956663/201911/956663-20191124154627715-1675003273.png" alt="" width="278" height="26"></p>
<p><HotList listData={ data } testData={ data2 }></HotList></p>
<p> </p>
<p><strong>接收 - 参数接收</strong><br>function HotList(props){<br> console.log(props)<br>}</p>
<p> </p>
<p>传入1个参数时,props打印</p>
<p><img src="https://img2018.cnblogs.com/blog/956663/201911/956663-20191124154642734-1336971438.png" alt="" width="492" height="57"></p>
<p>传入2个参数时,props打印</p>
<p><img src="https://img2018.cnblogs.com/blog/956663/201911/956663-20191124154706425-1412155183.png" alt="" width="490" height="70"></p>
<p> </p>
<p>可见传入的所有参数都集合在函数的props参数中,解构出来即可引用。</p>
<p> </p>
<p><strong>引用 - 解构或直接引用</strong></p>
<p>直接使用<br>console.log(props)<br>console.log(props.testData)</p>
<p><img src="https://img2018.cnblogs.com/blog/956663/201911/956663-20191124154717910-1286494525.png" alt="" width="323" height="103"></p>
<p> </p>
<p>解构使用:</p>
<p><img src="https://img2018.cnblogs.com/blog/956663/201911/956663-20191124154757834-2019467335.png" alt="" width="450" height="487"></p>
<p> </p>
<p> </p>
<h2>函数组件的缺点:</h2>
<p><strong>无状态组件</strong><br>函数组件只能实现非常简单的渲染功能。只是进行页面的展示和数据的渲染。没有逻辑的处理。也就是组件的内部是没有自己的数据和状态的。它是无状态组件。<br>无状态组件的使用时机是当且仅当数据展示、不需要逻辑处理的时候来使用。</p>
<p><strong>没有this</strong><br>打印内部的this。得到undefined。<br>function HotList(props){<br> console.log("打印函数组件内部的this:",this)<br>}</p>
<p><img src="https://img2018.cnblogs.com/blog/956663/201911/956663-20191124154749405-471765723.png" alt="" width="266" height="26"></p>
<p><strong>没有生命周期</strong><br>函数组件内部也没有生命周期。</p>
<p> </p>
<h2>总结:</h2>
<p>函数组件只有当展示视图的时候才用。做复杂的数据处理、需要有自己的状态的时候,需要用类组件。</p>
<p> </p>
</div>
<div id="MySignature" role="contentinfo">
越努力,越幸运;阿门。<br><br>
来源:https://www.cnblogs.com/padding1015/p/11922713.html
頁:
[1]