Reactjs 如何对编辑Javascript列表的访问作出反应?

Reactjs 如何对编辑Javascript列表的访问作出反应?,reactjs,Reactjs,我正在创建由两部分组成的代码,并试图更改React的App.js文件中函数中的代码,但其中一部分代码不起作用 在App.js文件中: 我的右代码=> state = { persons: [ { name: 'Max', age: 28 }, ], otherState: 'some other value', showPersons: false } togglePersonsHandler = () => { const

我正在创建由两部分组成的代码,并试图更改React的App.js文件中函数中的代码,但其中一部分代码不起作用


在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。糟糕的是,我忘了添加您不能在组件内启动变量。我更新了示例以使其更加清晰。