搜尋
首頁web前端js教程React中元件渲染使用詳解
React中元件渲染使用詳解May 24, 2018 pm 02:38 PM
react使用詳解

這次帶給大家React中元件渲染使用詳解,React中元件渲染使用的注意事項有哪些,下面就是實戰案例,一起來看一下。

元件渲染- 條件渲染(動態元件)

很多情況下元件是動態渲染的,例如登入狀態,如果已登入則顯示登出登錄,否則顯示登入

import React from 'react'
let Login = (props) => {
    return <input>;
}
let Logout = (props) => {
    return <input>;
}
export default class CP extends React.Component{
    state = {
        status: 0
    }
    login(){
        this.setState({status: 1})
    }
    logout(){
        this.setState({status: 0})
    }
    render(){
        let button = null;
        if(this.state.status == 0){
            button = <login></login>
        } else {
            button = <logout></logout>
        }
        return <p>{button}</p>
    }
}

效果預覽

元件渲染- 清單渲染

React 沒有指令,所以在清單渲染時得借助陣列來完成。

列表渲染—— 簡單實現

import React from 'react'
import ReactDOM from 'react-dom'
let Component1 = () => {
    let lis = [
  • Javascript
  • Vue
  • React
  • ]     return (         

                

                      {lis}             
                 ) } ReactDOM.render(          document.getElementById('app') )

    列表渲染—— 循環for

    import React from 'react'
    import ReactDOM from 'react-dom'
    let Component1 = () => {
        let data = ['Javascript', 'Vue', 'React']
        let lis = [];
        for(let frm of frms){
            lis.push(
  • {frm}
  • )     }     return (         

                

                      {lis}             
                 ) } ReactDOM.render(          document.getElementById('app') )

    列表渲染—— 循環map

    import React from 'react'
    import ReactDOM from 'react-dom'
    let Component1 = () => {
        let data = ['Javascript', 'Vue', 'React']
        let lis = data.map((frm) => {
            return 
  • {frm}
  •     });     return (         

                

                      {lis}             
                 ) } ReactDOM.render(          document.getElementById('app') )

    列表渲染—— 對象數組

    import React from 'react'
    import ReactDOM from 'react-dom'
    class Component1 extends React.Component {
        constructor(props){
            super(props)
        }
        static defaultProps = {
            students: [
                {id: 1, name: 'Tom', age: 18, gender: 1}, 
                {id: 2, name: 'Sam', age: 22, gender: 1}, 
                {id: 3, name: 'Lucy', age: 20, gender: 0}
            ]
        }
        getKeys(item = {}){
            return Object.keys(item)
        }
        render(){
            return (
                
                                                                  {                             this.getKeys(this.props.students[0]).map((key) => {                                 return                              })                         }                                                                            {                         this.props.students.map((obj) => {                             return (                                                                      {                                         this.getKeys(obj).map((key, idx) => {                                             return                                          })                                     }                                                              )                         })                     }                              
    {key}
    {obj[key]}
            )     } } ReactDOM.render(     ,     document.getElementById('app') )

    列表渲染—— 鍵(Keys)

    因為React 是虛擬DOM 到真實DOM 的一個過程,而DOM 本身就是一個對象,對象預設沒有唯一標識,所以需要手動指定。

    鍵(Keys) 幫助 React 標識哪個項目被修改、新增或移除了。數組中的每一個元素都應該有一個唯一不變的鍵(Keys)來識別。

    鍵(Keys)用到列表渲染中,同儕元素中必須是唯一的。

    元件渲染 —— 元件子節點

    因為元件的呼叫是將元件當成 DOM 節點使用,所以元件裡面可以包含子節點。 React 對元件的子節點透過this.props.children 來獲取,通常this.props.children會有以下幾種情況

    1. 如果目前元件沒有子節點,它就是undefined

    2. 如果有子節點,資料型別是object

    3. 如果有多個子節點,資料型別就是array

    為了解決這個資料型別不一致導致在使用的過程中要不斷判斷的情況,React 提供了一個方法 Reacth.Children來處理該屬性。

    var Component1 = React.createClass({
        render: function(){
            return (
                <p>                        
                    {
                        React.Children.map(this.props.children, function(childNode){
                            return </p>
  • {childNode}
  •                     })                 }                      );     } }) ReactDOM.render(              Tom         Sam     , document.getElementById('p1'));

    我相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!

    推薦閱讀:

    前端中排序演算法實例詳解

    #PromiseA 的實作步驟詳解

    #

    以上是React中元件渲染使用詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

    陳述
    本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
    react中canvas的用法是什么react中canvas的用法是什么Apr 27, 2022 pm 03:12 PM

    在react中,canvas用于绘制各种图表、动画等;可以利用“react-konva”插件使用canvas,该插件是一个canvas第三方库,用于使用React操作canvas绘制复杂的画布图形,并提供了元素的事件机制和拖放操作的支持。

    react中antd和dva是什么意思react中antd和dva是什么意思Apr 21, 2022 pm 03:25 PM

    在react中,antd是基于Ant Design的React UI组件库,主要用于研发企业级中后台产品;dva是一个基于redux和“redux-saga”的数据流方案,内置了“react-router”和fetch,可理解为应用框架。

    React是双向数据流吗React是双向数据流吗Apr 21, 2022 am 11:18 AM

    React不是双向数据流,而是单向数据流。单向数据流是指数据在某个节点被改动后,只会影响一个方向上的其他节点;React中的表现就是数据主要通过props从父节点传递到子节点,若父级的某个props改变了,React会重渲染所有子节点。

    react中为什么使用nodereact中为什么使用nodeApr 21, 2022 am 10:34 AM

    因为在react中需要利用到webpack,而webpack依赖nodejs;webpack是一个模块打包机,在执行打包压缩的时候是依赖nodejs的,没有nodejs就不能使用webpack,所以react需要使用nodejs。

    react是组件化开发吗react是组件化开发吗Apr 22, 2022 am 10:44 AM

    react是组件化开发;组件化是React的核心思想,可以开发出一个个独立可复用的小组件来构造应用,任何的应用都会被抽象成一颗组件树,组件化开发也就是将一个页面拆分成一个个小的功能模块,每个功能完成自己这部分独立功能。

    react和reactdom有什么区别react和reactdom有什么区别Apr 27, 2022 am 10:26 AM

    react和reactdom的区别是:ReactDom只做和浏览器或DOM相关的操作,例如“ReactDOM.findDOMNode()”操作;而react负责除浏览器和DOM以外的相关操作,ReactDom是React的一部分。

    react中forceupdate的用法是什么react中forceupdate的用法是什么Apr 19, 2022 pm 12:03 PM

    在react中,forceupdate()用于强制使组件跳过shouldComponentUpdate(),直接调用render(),可以触发组件的正常生命周期方法,语法为“component.forceUpdate(callback)”。

    react有没有双向绑定react有没有双向绑定Apr 21, 2022 am 10:24 AM

    react中没有双向绑定;react的设计思想就是单向数据流,没有双向绑定的概念;react是view层,单项数据流只能由父组件通过props将数据传递给子组件,满足了view层渲染的要求并且更易测试与控制,所以在react中没有双向绑定。

    See all articles

    熱AI工具

    Undresser.AI Undress

    Undresser.AI Undress

    人工智慧驅動的應用程序,用於創建逼真的裸體照片

    AI Clothes Remover

    AI Clothes Remover

    用於從照片中去除衣服的線上人工智慧工具。

    Undress AI Tool

    Undress AI Tool

    免費脫衣圖片

    Clothoff.io

    Clothoff.io

    AI脫衣器

    AI Hentai Generator

    AI Hentai Generator

    免費產生 AI 無盡。

    熱門文章

    R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
    3 週前By尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O.最佳圖形設置
    3 週前By尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O.如果您聽不到任何人,如何修復音頻
    3 週前By尊渡假赌尊渡假赌尊渡假赌

    熱工具

    EditPlus 中文破解版

    EditPlus 中文破解版

    體積小,語法高亮,不支援程式碼提示功能

    ZendStudio 13.5.1 Mac

    ZendStudio 13.5.1 Mac

    強大的PHP整合開發環境

    VSCode Windows 64位元 下載

    VSCode Windows 64位元 下載

    微軟推出的免費、功能強大的一款IDE編輯器

    SublimeText3 Mac版

    SublimeText3 Mac版

    神級程式碼編輯軟體(SublimeText3)

    Dreamweaver Mac版

    Dreamweaver Mac版

    視覺化網頁開發工具