Javascript 我可以在reactjs类之外声明一个全局变量吗
现在我知道我不能使用push更新状态中的'opraray'数组 所以我在想,如果我在类外声明一个变量并更新该数组,然后更新内部状态“opraray”,会怎么样Javascript 我可以在reactjs类之外声明一个全局变量吗,javascript,reactjs,Javascript,Reactjs,现在我知道我不能使用push更新状态中的'opraray'数组 所以我在想,如果我在类外声明一个变量并更新该数组,然后更新内部状态“opraray”,会怎么样 var array= [] class Body extends Component { state= { input: '', oprStatus: false, check: false, count: 0, oprArray: null } } 这并不能解决问题,因为您仍然需要改变状态,而不是设置新状态。第一次在
var array= []
class Body extends Component {
state= {
input: '',
oprStatus: false,
check: false,
count: 0,
oprArray: null
} }
这并不能解决问题,因为您仍然需要改变状态,而不是设置新状态。第一次在状态中设置
opraray:array
后,状态和全局array
变量都指向同一个数组。下一次,push
将直接修改状态-这是一个带有React状态的no-no
要将新项目添加到oprArray
,请执行以下操作:
array.push(2);
this.setState({
oprArray: array
)}
即:
setState
的回调形式,这是在基于现有状态(先前的opraray
内容)修改状态(使用新条目2
)时所必需的const{Component}=React;
类主体扩展组件{
状态={
输入:“”,
状态:错误,
检查:错误,
计数:0,
opraray:null
};
componentDidMount(){
//由于您的状态以“null”开头,我假设您收到了初始数据
//通过ajax或类似方式;此处模拟超时
设置超时(()=>{
this.setState({opraray:[0,1]});//初始数据不基于现有状态
//现在设置以后获取更多数据
设置超时(()=>{
//附加数据
this.setState(({opraray})=>({opraray:[…opraray,2]}));
}, 800);
}, 800);
}
render(){
const{opraray}=this.state;
返回(
oprArray:{oprArray?oprArray.join(“,”:(无)”}
);
}
}
render(,document.getElementById(“根”))代码>
这并不能解决问题,因为您仍然在改变状态,而不是设置新状态。第一次在状态中设置opraray:array
后,状态和全局array
变量都指向同一个数组。下一次,push
将直接修改状态-这是一个带有React状态的no-no
要将新项目添加到oprArray
,请执行以下操作:
array.push(2);
this.setState({
oprArray: array
)}
即:
使用setState
的回调形式,这是在基于现有状态(先前的opraray
内容)修改状态(使用新条目2
)时所必需的
通过扩展表示法,使用附加项创建一个新数组
实例:
const{Component}=React;
类主体扩展组件{
状态={
输入:“”,
状态:错误,
检查:错误,
计数:0,
opraray:null
};
componentDidMount(){
//由于您的状态以“null”开头,我假设您收到了初始数据
//通过ajax或类似方式;此处模拟超时
设置超时(()=>{
this.setState({opraray:[0,1]});//初始数据不基于现有状态
//现在设置以后获取更多数据
设置超时(()=>{
//附加数据
this.setState(({opraray})=>({opraray:[…opraray,2]}));
}, 800);
}, 800);
}
render(){
const{opraray}=this.state;
返回(
oprArray:{oprArray?oprArray.join(“,”:(无)”}
);
}
}
render(,document.getElementById(“根”))代码>