简体   繁体   English

如何在 React 中向 jsx 元素数组的最后一个元素添加道具?

[英]How to add a prop to the last element of an array of jsx elements in React?

  • I want to have isActive props for the last element in the array as true and rest as false我想让数组中最后一个元素的isActive道具为,rest 为
  • initially i am setting all as true but i want to modify it dynamically depending upon the length of the array最初我将所有设置为true但我想根据数组的长度动态修改它
  • That is if there is only 1 element i want to have isActive as true for the 1st Number component也就是说,如果只有 1 个元素我希望第一个Number组件的isActivetrue

Example例子

  • Suppose i have 5 elements in number array then i want to have number[3] having isActive true and rest as false假设我在数字数组中有 5 个元素,那么我希望number[3]具有isActive true和 rest 为 false

please help stuck over this array manipulation:((请帮助解决这个数组操作:((

import React, { Component } from 'react'

class Numbers extends Component {
    render() {
        const correctGuesses = this.props.correctGuesses
        let number = [<Number guess={'1-100'} key={0 + Math.random} isActive={true}/>]
        for(let i=0 ; i < correctGuesses ; i++) {
            number.push(<Number guess={`1-${i+2}00`} key={i} isActive={true}/>)
        }

        return (
            <React.Fragment>
                {number}
            </React.Fragment>
        )
    }
}

If you want the last element to have isActive props true you can use this:如果您希望最后一个元素具有 isActive 道具,您可以使用:

Import React, { Component } from 'react'

class Numbers extends Component {
    render() {
        const correctGuesses = this.props.correctGuesses
        let number
        if(correctGuesses === 0) {
            number = [<Number guess={`1-100`} key={Math.random} isActive={true}/>]
        } else if (correctGuesses > 0) {
            number = [<Number guess={`1-100`} key={Math.random} isActive={false}/>]
        }

        for(let i=0 ; i < correctGuesses ; i++) {
            if(i === correctGuesses-1)
                number.push(<Number guess={`1-${i+2}00`} key={i} isActive={true}/>)
            else
                number.push(<Number guess={`1-${i+2}00`} key={i} isActive={false}/>)
        }


        return (
            <React.Fragment>
                {number}
            </React.Fragment>
        )
    }
}

Props are immutable once you assign them.一旦你分配了道具,它们就是不可变的。 One way would be to set the value to an object and then to set its children value on the go:一种方法是将值设置为 object,然后在 go 上设置其子值:

import React, { Component } from 'react'

class Numbers extends Component {
    render() {
        const correctGuesses = this.props.correctGuesses;
        let lastActive = {value: true};
        let number = [<Number guess={'1-100'} key={0 + Math.random} isActive={lastActive}/>]
        for(let i=0 ; i < correctGuesses ; i++) {
            lastActive = {value: true};
            number.push(<Number guess={`1-${i+2}00`} key={i} isActive={lastActive}/>)
        }
        
        lastActive.value = false;
        

        return (
            <React.Fragment>
                {number}
            </React.Fragment>
        )
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM