无法在 React 中检索 prop 的值
Not able to retrieve value of prop in React
第一次在这里发帖,所以希望我解释正确...我正在 React 中构建一个多步骤表单,我想在其中一个步骤中显示可变数量的输入字段。需要的字段数在class组件的状态中设置。
当我只输入一个数字时,代码按计划工作,即呈现我想要的内容,但当我尝试将 'num' 声明为 props.number
时却没有
它不会抛出错误,只是什么都不显示。似乎检索 props.currentStep 的值就好了。事实上,如果我让 num = props.currentStep,它会呈现相应数量的字段。
function Step2(props) {
let num = props.number;
let i = 0
if (props.currentStep !== 2) {
return null
}
return(
<React.Fragment>
<div>
{Array(num).fill().map(() => {
i += 1
return (
<div key={i}>
<TextField 1>
<TextField 2>
</div>
)
})
}
</div>
</React.Fragment>
)
}
我也试过在 class 组件中使用 getter,这将数字正确地记录到控制台,但我仍然无法获取值并在我的函数中使用它。
class Form extends Component {
constructor(props) {
super(props)
this.state = {
currentStep: 1,
number: 3,
get Number() {
let result = this.number;
console.log(result);
return result
}
}
}
render() {
return (
<div>
<React.Fragment>
<form>
<Step1
currentStep={this.state.currentStep}
/>
<Step2
currentStep={this.state.currentStep}
/>
<Step3
currentStep={this.state.currentStep}
/>
</form>
</React.Fragment>
</div>
)
}
}
即使使用 getter,let num = props.Number 也不起作用。
我觉得我遗漏了一些明显的东西,或者可能只是以完全错误的方式做这件事。
尽量限制这里的内容量(也是怕尴尬),所以没有发布完整的代码,即 handlechange 和 next/previous 步骤函数等,但如果您需要,请告诉我更多信息可以更好地回答这个问题。
您需要将 'number' 属性传递给 Step2 组件。
<Step2 currentStep={this.state.currentStep} number={this.state.number} />;
在您的 Step2 组件中,您没有传递一个名为 number 的道具,而是传递了一个名为 currentStep 的道具。尝试像这样将数字传递给组件
<Step2 currentStep={this.state.currentStep} number={this.state.number} />;
函数的目的是什么
get Number() {
let result = this.number;
console.log(result);
return result
}
您不需要这样的东西,您可以访问 this.state.number
号码。如果你想改变它创建一个像这样的函数
changeNumber=(number)=> this.setState({number:number});
第一次在这里发帖,所以希望我解释正确...我正在 React 中构建一个多步骤表单,我想在其中一个步骤中显示可变数量的输入字段。需要的字段数在class组件的状态中设置。
当我只输入一个数字时,代码按计划工作,即呈现我想要的内容,但当我尝试将 'num' 声明为 props.number
时却没有它不会抛出错误,只是什么都不显示。似乎检索 props.currentStep 的值就好了。事实上,如果我让 num = props.currentStep,它会呈现相应数量的字段。
function Step2(props) {
let num = props.number;
let i = 0
if (props.currentStep !== 2) {
return null
}
return(
<React.Fragment>
<div>
{Array(num).fill().map(() => {
i += 1
return (
<div key={i}>
<TextField 1>
<TextField 2>
</div>
)
})
}
</div>
</React.Fragment>
)
}
我也试过在 class 组件中使用 getter,这将数字正确地记录到控制台,但我仍然无法获取值并在我的函数中使用它。
class Form extends Component {
constructor(props) {
super(props)
this.state = {
currentStep: 1,
number: 3,
get Number() {
let result = this.number;
console.log(result);
return result
}
}
}
render() {
return (
<div>
<React.Fragment>
<form>
<Step1
currentStep={this.state.currentStep}
/>
<Step2
currentStep={this.state.currentStep}
/>
<Step3
currentStep={this.state.currentStep}
/>
</form>
</React.Fragment>
</div>
)
}
}
即使使用 getter,let num = props.Number 也不起作用。
我觉得我遗漏了一些明显的东西,或者可能只是以完全错误的方式做这件事。
尽量限制这里的内容量(也是怕尴尬),所以没有发布完整的代码,即 handlechange 和 next/previous 步骤函数等,但如果您需要,请告诉我更多信息可以更好地回答这个问题。
您需要将 'number' 属性传递给 Step2 组件。
<Step2 currentStep={this.state.currentStep} number={this.state.number} />;
在您的 Step2 组件中,您没有传递一个名为 number 的道具,而是传递了一个名为 currentStep 的道具。尝试像这样将数字传递给组件
<Step2 currentStep={this.state.currentStep} number={this.state.number} />;
函数的目的是什么
get Number() {
let result = this.number;
console.log(result);
return result
}
您不需要这样的东西,您可以访问 this.state.number
号码。如果你想改变它创建一个像这样的函数
changeNumber=(number)=> this.setState({number:number});