react遍歷數組和對象


Map數組

react中遍歷數組采用數組的map迭代

注意:在map中要加key

key 幫助 React 識別哪些元素改變了,比如被添加或刪除。因此你應當給數組中的每一個元素賦予一個確定的標識
虛擬dom對比的時候,加key可以避免出錯。 如果不加key,當一個元素添加的時候,后面的元素就會經歷卸載與重新裝載的過程。
為了避免出錯。所以我們在開發中應該盡量避免用index作為key值,除非我知道index是不變的。

<body>    
    <div id="app">
    </div>
    <script type="text/babel">  
        const arr = ["a","b","c","d"]
        ReactDOM.render(<div>
            <ul>
                {
                    arr.map((item,index)=>{
                        return <li key={index}>{item}</li>
                    }) 
                }
            </ul> 
        </div>,document.getElementById("app"))
    </script>
</body>

如果有2個數組的話,重復寫上述代碼代碼的復用性就不好,這時我們可以進行函數封裝

<body>  
    <div id="app"></div>
    <script type="text/babel">
        var arr = ["a","b","c"]
        var arr2 = ["d","e","f"]
        //封裝成函數的話,記得內部需要加return關鍵字!
        function showList(arr){
            return arr.map((item,index)=>{
                return <p key={index}>{item}</p>
            })
        }
        ReactDOM.render(<div>
                {
                    showList(arr)
                }
                {
                    showList(arr2)
                }
            </div>,document.getElementById("app"))
    </script>
</body>

一個點擊變顏色的小案例

<body>
    <div id="app"></div>
    <script type="text/babel">
        //return 后面返回一段jsx代碼的時候,最好加(),為了避免問題
        //需求:讓第一項默認添加紅色,后續點擊每一項,每一項變紅
        //需要我們手動的去執行render函數!
        var arr = ["a","b","c"]
        //設置一個狀態變量
        var currentIndex = 0
        function showList(arr){
            return (
                <ul>
                    {
                        arr.map((item,index)=>{
                            return <li 
                                key={index} 
                                onClick={()=>{currentIndex=index;render();console.log(currentIndex)}}
                                style={{color:index===currentIndex?"red":''}}
                            >{item}</li>
                        })
                    }    
                </ul>
            )
        }
        
        render()
        function render(){
            ReactDOM.render(<div>
              {showList(arr)}
            </div>,document.getElementById("app"))
        }
    </script>
</body>

react中不能直接遍歷對象,使用 Object.keys(obj)取出數組的鍵再去遍歷

<body>  
    <div id="app"></div>
    <script type="text/babel">
        let obj = {a:1,b:2}  //Object.keys(obj)之后變成["a","b"]形式
        class App extends React.Component{
            render(){
                return (
                    <div>
                        {
                            Object.keys(obj).map((item,index)=>{
                                return <p key={index}>{item} : {obj[item]}</p>
                            })
                        }
                    </div>
                )
            }
        }        ReactDOM.render(<App/>,document.getElementById("app"))
    </script>
</body>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM