我正在创建一个应用程序,并且需要多次更改一个可变名称的情况下多次渲染一个表单元素。不幸的是,我遇到了一些问题,即不是所有的代码都从组件中返回。我已经删除了一些变量声明,以使其更易于阅读。
主要组件
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
,但是没有返回花括号中包含的其他信息。
答案 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>
)
将所有内容更改为此后,所有内容都会弹出!