在React中完全渲染组件返回的组件

时间:2020-11-09 18:18:08

标签: javascript reactjs semantic-ui semantic-ui-react

我正在创建一个应用程序,并且需要多次更改一个可变名称的情况下多次渲染一个表单元素。不幸的是,我遇到了一些问题,即不是所有的代码都从组件中返回。我已经删除了一些变量声明,以使其更易于阅读。

主要组件

export default function StrengthLog() {
   
    return (
        <Container id="strengthContainer">
            <SelectMovements />
            <Form>
            {
                movement.map(movement => {
                    const checked = movement[1].triggered
                    if (checked){
                        return <StrengthForm props={movement}/>
                    }
                })
            }
            <Button content='submit'>Submit</Button>
            </Form>
        </Container>
    )
}

退回组件

export default function StrengthForm({props}) {
    return (
        <div>
            <h1>Hello!</h1>
                {               
                    props[1].triggered
                    ? (
                        setsArray.map(item => {
                            return <Group widths='equal'>
                            <Select fluid label='Reps' placeholder='Select Reps' options={repOptions} name={`${liftVarName}-rep-1`}/>
                            <Input fluid placeholder='Enter Weight' label='Weight' name={`${liftVarName}-weight-1`}/>
                            <Button className="addSet">+</Button>
                            <Button className="deleteSet">x</Button>
                            </Group>
                        })
                    )
                    : console.log('Thing')
                 }
        </div>
    )
}

正在发生的事情是它返回了<h1>中的StrengthForm,但是没有返回花括号中包含的其他信息。

1 个答案:

答案 0 :(得分:0)

问题是我在控制台中将setsArray声明为const setsArray = new Array(props[1].sets),这给了我StrengthForm.js:9 (4) [empty × 4]。我怀疑是因为该数组实际上不包含我需要在其中添加内容的内容,所以我注释了最初的声明并改为执行此操作。

    const setsArray = (() => {
        const emptyArray = []
        for(let i = 0; i <= props[1].sets; i++) {
            emptyArray.push(' ');
        }
        return emptyArray;
    })();
    return (
        <div>
            <h1>Hello!</h1>
                {               
                    props[1].triggered
                    ? (
                        setsArray.map(() => {
                            return <>
                            <Group widths='equal'>
                            <Select fluid label='Reps' placeholder='Select Reps' options={repOptions} name={`${liftVarName}-rep-1`}/>
                            <Input fluid placeholder='Enter Weight' label='Weight' name={`${liftVarName}-weight-1`}/>
                            <Button className="addSet">+</Button>
                            <Button className="deleteSet">x</Button>
                            </Group>
                            </>
                        })
                        
                    )
                    : console.log('Thing')
                 }
        </div>
    )

将所有内容更改为此后,所有内容都会弹出!