Reactjs 基于道具变更,反应组件不重新招标
我的react组件中有一个prop-classifiers数组,当通过表单上传文件时,该数组会发生变化。我必须根据分类器数组的值填充表单中的分类器字段。当分类器数组被更改,但列表没有被填充时,我调用this.render() 建造商:Reactjs 基于道具变更,反应组件不重新招标,reactjs,Reactjs,我的react组件中有一个prop-classifiers数组,当通过表单上传文件时,该数组会发生变化。我必须根据分类器数组的值填充表单中的分类器字段。当分类器数组被更改,但列表没有被填充时,我调用this.render() 建造商: constructor() { super(); this.classifiers = []; } 渲染方法: render() { if(this.classifiers.length!==0){ ret
constructor() {
super();
this.classifiers = [];
}
渲染方法:
render() {
if(this.classifiers.length!==0){
return(
<form>
</form>
)
}
else{
return(
<form>
</form>
)
}
}
render(){
if(this.classifiers.length!==0){
返回(
)
}
否则{
返回(
)
}
}
假设表单组件编写正确。当我将一些控制台日志放入渲染的if和else中时,它们工作正常,但该组件不会使用新的分类器重新渲染。该组件不会由道具更新,而是状态。。。更改道具的状态
this.setState({ whateverHere })
该组件不是由道具更新的,而是状态。。。更改道具的状态
this.setState({ whateverHere })
我的react组件中有一个道具分类器数组,它会发生变化
通过表单上载文件时
分类器与prop无关,它是一个类变量
我必须根据值填充表单中的classifiers字段
对分类器数组进行分类
当您在组件中的某些内容不时发生更改或变化时,请使用状态
this.state = {
classifier: []
}
我称之为。render()
它应该由react调用,而不是由用户显式调用。不要中断流程
我想你可以很好地改变。
如果没有,您可以将其更改为
const updateClassifier = (items= []) => {
this.setState((prevState) => {
return {
classifier: [...prevState.classifier, ...items]
}
})
}
用于呈现窗体
const renderMyForm = () => {
if(this.state.classifier.length !== 0){
return (<form></form>);
} else {
return (<form></form>);
}
}
render() {
{ renderMyForm ()}
}
const renderMyForm=()=>{
if(this.state.classifier.length!==0){
返回();
}否则{
返回();
}
}
render(){
{renderMyForm()}
}
我的react组件中有一个道具分类器数组,它会发生变化
通过表单上载文件时
分类器与prop无关,它是一个类变量
我必须根据值填充表单中的classifiers字段
对分类器数组进行分类
当您在组件中的某些内容不时发生更改或变化时,请使用状态
this.state = {
classifier: []
}
我称之为。render()
它应该由react调用,而不是由用户显式调用。不要中断流程
我想你可以很好地改变。
如果没有,您可以将其更改为
const updateClassifier = (items= []) => {
this.setState((prevState) => {
return {
classifier: [...prevState.classifier, ...items]
}
})
}
用于呈现窗体
const renderMyForm = () => {
if(this.state.classifier.length !== 0){
return (<form></form>);
} else {
return (<form></form>);
}
}
render() {
{ renderMyForm ()}
}
const renderMyForm=()=>{
if(this.state.classifier.length!==0){
返回();
}否则{
返回();
}
}
render(){
{renderMyForm()}
}
add code where you calling this.render()add code you calling this.render()接受了另一个答案,因为它非常复杂,对于像我这样的初学者来说很容易实现。谢谢你的回答。我接受了另一个答案,因为它非常复杂,对于像我这样的初学者来说很容易实现。谢谢你的回答。