编辑:我重写了这个问题,以澄清我想要的--感谢到目前为止回复我的人,帮助我磨练它。
{
'authors' : {
234 : {
'name' : 'Alice Ames',
'bio' : 'Alice is the author of over ...',
'profile_pic' : 'http://....'
},
794 : {
'name' : 'Bob Blake',
'bio' : 'Hailing from parts unknown, Bob...',
'profile_pic' : 'http://....'
},
...more authors...
},
'publications' : {
539 : {
'title' : 'Short Story Vol. 2',
'author_ids' : [ 234, 999, 220 ]
},
93 : {
'title' : 'Mastering Fly Fishing',
'author_ids' : [ 234 ]
},
...more publications...
}
}
在这个人为的示例中,状态有两个主要区域,分别由authors
和publications
键访问。
authors
键指向一个以作者ID为键的对象,该ID指向一个带有一些作者数据的对象。
publications
键指向一个对象,该对象键控于具有某些发布数据的发布的ID以及一个作者数组。
...
<App>
<AuthorList authors={this.state.authors} />
<PublicationList authors={this.state.authors} publications={this.state.publications} />
</App>
...
...
class AuthorList extends React.Component {
render() {
let authors = this.props.authors;
return (
<div>
{ Object.keys( authors ).map( ( author_id ) => {
return <Author author={authors[author_id]} />;
}
</div>
);
}
}
...
...
class PublicationList extends React.Component {
render() {
let publications = this.props.publications;
let authors = this.props.authors;
return (
<div>
{ Object.keys( publications ).map( ( publication_id ) => {
return <Publication publication={publications[publication_id]} authors=authors />;
}
</div>
);
}
}
...
从这个答案来看:
reactJS-是否在调用“setstate”时调用render?
React组件的render()
函数将在其状态或其任何父级的状态发生变化时被调用-无论该状态变化是否与该组件的道具有关。可以使用ShouldComponentUpdate更改此行为。
下面是一种使用对象扩展语法高效且可读的方法。
let state = {
authors : {
...this.state.authors,
[ givenId ] : {
...this.state.authors[ givenID ],
bio : newValue
}
}
}
this.setState(state)
请记住,在JSX中映射项时,必须传递一个“键”作为道具。
这主要是因为react所做的协调(react的“不同”算法来检查发生了什么变化)检查映射的jsx(大致命名为jsx)的键。
无论如何,在reacts state/SetState或redux中管理状态与“和解”无关。
在这两种情况下,您都可以使用“对象扩展语法”语法更改嵌套数据的部分。
您所关心的就是将“相同”的键传递给映射的JSX。因此,尽管react重新发送,但它不会尝试对不必要的部分进行dom更新,这是昂贵的。
问题内容: 所以,我有多个ReactComponent。最初,我以为会有一个带有其自身状态的父组件(简称为GrandPa),它将有关其状态的一些信息传递给另一个组件(称为Parent)。同样,父母将他的一些财产传给孩子,孩子则传给孙子。因此,我们具有层次结构: 爷爷->父母->孩子->孙子 但是,我很快意识到,当我使用method 更改GrandPa的状态时,所做的更改不会沿通道向下级联。我意识到
问题内容: 我试图通过使用这样的嵌套属性来组织我的状态: 但是像这样更新状态 不起作用。如何正确完成? 问题答案: 为了创建嵌套对象,您可以按照以下方法进行操作,因为我认为setState无法处理嵌套更新。 这个想法是创建一个虚拟对象,对其执行操作,然后用更新的对象替换组件的状态 现在,散布运算符仅创建对象的一级嵌套副本。如果您的状态是高度嵌套的,例如: 您可以在每个级别使用传播运算符来设置状态,
我正在尝试学习React(使用redux),所以我正在制作一个应用程序,在其中我可以创建训练计划,将训练添加到计划中,然后将训练添加到训练中。 PlanListComponent 我的PlansList组件为每个计划呈现一张卡片。在这张卡片中,它为该计划中的每个训练呈现一个训练列表。将训练添加到计划后,“计划列表”组件不会重新渲染。添加的训练仅在我刷新页面后显示。我之所以选择这种情况,是因为我必须
我们正在热烈讨论如何在React中更新嵌套状态。国家是否应该是不可改变的?优雅地更新状态的最佳实践是什么? 假设你有这样的状态结构: 然后我们要更新乔·多伊的电话号码。我们有几种方法可以做到这一点: 将状态强制更新更改为重新加载 带变异状态的变异状态集合状态 Object.assign,这仍然会改变状态,因为new学生只是对this.state指向的同一对象的新引用 更新不变性助手(https:/
本文向大家介绍在react中你是怎么进行状态管理的?相关面试题,主要包含被问及在react中你是怎么进行状态管理的?时的应答技巧和注意事项,需要的朋友参考一下 使用react-redux进行状态管理 使用redux-thunk中间件进行异步数据的处理
https://codesandbox.io/s/ww49ef?file=/TasksContext.js&utm_med... 模仿以上官网的示例:出现了 dispatch is not a function 报错?请问为何?