Reactjs 如何对编辑Javascript列表的访问作出反应?
我正在创建由两部分组成的代码,并试图更改React的App.js文件中函数中的代码,但其中一部分代码不起作用Reactjs 如何对编辑Javascript列表的访问作出反应?,reactjs,Reactjs,我正在创建由两部分组成的代码,并试图更改React的App.js文件中函数中的代码,但其中一部分代码不起作用 在App.js文件中: 我的右代码=> state = { persons: [ { name: 'Max', age: 28 }, ], otherState: 'some other value', showPersons: false } togglePersonsHandler = () => { const
在App.js文件中: 我的右代码=>
state = {
persons: [
{ name: 'Max', age: 28 },
],
otherState: 'some other value',
showPersons: false
}
togglePersonsHandler = () => {
const doesShow = this.state.showPersons;
this.setState({
showPersons: !doesShow
});
}
顶层代码正在运行,但我的问题在于底层代码。为什么nTest不更改对kkk
列表的访问权限
kkk = {
State: false,
show: true
}
nTestChange = () => {
const doesShow = this.kkk.show;
this.setState({
show: !doesShow
});
总的来说,我需要更改kkk列表
感谢setState()
仅更改函数此.state
对象。顺便说一下,另一种形式的setState()
函数是:
togglePersonsHandler = () => {
this.setState((prevState, props) => {
showPersons: !prevState.showPersons
});
}
setState()
仅更改函数此.state对象。顺便说一下,另一种形式的setState()
函数是:
togglePersonsHandler = () => {
this.setState((prevState, props) => {
showPersons: !prevState.showPersons
});
}
setState
之所以称为setState,是因为它只做一件事:设置组件的状态。React不允许在组件内部使用除状态之外的任何其他变量,因此尝试在组件内部初始化kkk
将抛出错误,如您所述
在您的案例中没有理由不使用state。状态用于跟踪组件内的变量,这正是您想要做的。如果您确实不想使用state,还有另一个选项:使用this
。您可以在App.js的构造函数中初始化kkk
,如下所示:
constructor(props){
super(props);
this.kkk = {
state: false,
show: true
}
}
nTestChange = () => {
this.kkk.show = !this.kkk.show;
}
只有在kkk
发生更改时不希望组件重新加载时,才应使用此选项。在您的情况下,我将继续使用您的state
工作示例
有关该州的更多信息,请参阅官方React文档:
官方入门教程还将很好地介绍React和状态管理:
(关于状态管理的部分)setState
被称为setState,因为它只做一件事:设置组件的状态。React不允许在组件内部使用除状态之外的任何其他变量,因此尝试在组件内部初始化kkk
将抛出错误,如您所述
在您的案例中没有理由不使用state。状态用于跟踪组件内的变量,这正是您想要做的。如果您确实不想使用state,还有另一个选项:使用this
。您可以在App.js的构造函数中初始化kkk
,如下所示:
constructor(props){
super(props);
this.kkk = {
state: false,
show: true
}
}
nTestChange = () => {
this.kkk.show = !this.kkk.show;
}
只有在kkk
发生更改时不希望组件重新加载时,才应使用此选项。在您的情况下,我将继续使用您的state
工作示例
有关该州的更多信息,请参阅官方React文档:
官方入门教程还将很好地介绍React和状态管理:
(关于国家管理的部分)谢谢@Yura。我仍然有这个问题。我想更新kkk列表,但我无法更新。我以前看过该页面,但我不明白。您必须明白,只有当this.state
或this.props
对象已更改时,该方法才render()
重写ui。如果更改任何其他对象,如this.kkk
,则方法render()
不会重写ui。看看我的JSFIDLE示例:在控制台中,您可以看到this.kkk
已更改,但ui未更改。换句话说:当this.state
或this.props
更改时调用了方法render()
。我现在明白您所说的,谢谢。有没有办法使用其他对象?我的意思是除了这个.state
?任何其他对象都没有效果谢谢@Yura。我仍然有这个问题。我想更新kkk列表,但我无法更新。我以前看过该页面,但我不明白。您必须明白,只有当this.state
或this.props
对象已更改时,该方法才render()
重写ui。如果更改任何其他对象,如this.kkk
,则方法render()
不会重写ui。看看我的JSFIDLE示例:在控制台中,您可以看到this.kkk
已更改,但ui未更改。换句话说:当this.state
或this.props
更改时调用了方法render()
。我现在明白您所说的,谢谢。有没有办法使用其他对象?我的意思是,除了this.state
?任何其他对象都不具有effecthi@xander berkein。我以前测试过,但有一个错误“kkk”未定义无未定义
请告诉我我的问题是什么?你好@shahryartavakkoli。糟糕的是,我忘了添加您不能在组件内启动变量。我更新了示例以使其更清晰。hi@xander berkein。我以前测试过,但有一个错误“kkk”未定义无未定义
请告诉我我的问题是什么?你好@shahryartavakkoli。糟糕的是,我忘了添加您不能在组件内启动变量。我更新了示例以使其更加清晰。