当前位置: 首页 > 面试题库 >

在React组件的状态下存储对象?

施宏大
2023-03-14
问题内容

是否可以在React组件的状态下存储对象?如果是,那么我们如何使用来更改该对象中键的值setState?我认为在语法上不允许这样写:

this.setState({ abc.xyz: 'new value' });

同样,我还有一个问题:在React组件中可以有一组变量,以便可以在组件的任何方法中使用它们,而不是将它们存储在状态中,这还可以吗?

您可以创建一个包含所有这些变量的简单对象,并将其放在组件级别,就像在组件上声明任何方法一样。

很可能会遇到这样的情况,即您在代码中包含了很多业务逻辑,并且需要使用许多变量,这些变量的值可以通过几种方法更改,然后您可以根据这些值更改组件的状态。

因此,您无需保留所有这些变量在状态中,而是仅保留其值应直接反映在UI中的那些变量。

如果这种方法比我在这里写的第一个问题更好,那么我就不需要在状态中存储对象。


问题答案:

除了kiran的帖子之外,还有更新助手(以前是react
addon
)。可以使用以下命令与npm一起安装npm install immutability-helper

import update from 'immutability-helper';

var abc = update(this.state.abc, {
   xyz: {$set: 'foo'}
});

this.setState({abc: abc});

这将创建一个具有更新值的新对象,并且其他属性保持不变。当您需要执行诸如推入数组并同时设置其他值之类的操作时,此功能将更为有用。有些人在各处使用它,因为它具有不变性。

如果这样做,您可以采取以下措施来弥补

shouldComponentUpdate: function(nextProps, nextState){
   return this.state.abc !== nextState.abc; 
   // and compare any props that might cause an update
}


 类似资料:
  • 本文向大家介绍描述下在react中无状态组件和有状态组件的区别是什么?相关面试题,主要包含被问及描述下在react中无状态组件和有状态组件的区别是什么?时的应答技巧和注意事项,需要的朋友参考一下 1,无状态组件主要用来定义模板,接收来自父组件props传递过来的数据,使用{props.xxx}的表达式把props塞到模板里面。无状态组件应该保持模板的纯粹性,以便于组件复用。创建无状态组件如下: v

  • 问题内容: 以下是两个 几乎 完成相同任务的React组件。一个是功能;另一个是功能。另一个是一类。每个组件都有一个带有异步侦听器的组件,该侦听器会在更改时进行更新。我需要能够像在经典组件中那样在功能组件中进行访问。 万一有一个以上的情况,不应在全球范围内。 不能包含在功能范围内,因为每次渲染时都会重新初始化。也不应处于状态,因为更改时组件无需呈现。 不会出现此问题,因为它在组件的整个生命周期中都

  • 问题内容: 我只是做一个简单的应用程序来学习与redux异步。我已经使所有工作正常进行,现在我只想在网页上显示实际状态。现在,我实际上如何在render方法中访问商店的状态? 这是我的代码(所有内容都在一页中,因为我只是在学习): 因此,在状态的render方法中,我想列出商店中的所有内容。 谢谢 问题答案: 您应该创建单独的组件,该组件将侦听状态更改并在每次状态更改时进行更新:

  • 我只是做了一个简单的应用程序学习异步与Redux。我已经使所有的工作,现在我只想显示的实际状态到网页上。现在,我如何在render方法中实际访问存储的状态? 这里是我的代码(所有内容都在一个页面中,因为我只是在学习): 谢谢

  • 这是一个更大的组件的一部分,但我在下面的一个可重复的例子中总结了它: 我知道React中的组件在状态改变时会重新呈现,为什么将新数组设置为状态不会触发这个呢?但是在清除状态时rerender是明显的? 我的沙盒:https://codesandbox.io/s/immutable-sun-oujqj?file=/src/app.js

  • 我目前正在考虑将opengl状态存储为某种适当类型的全局thread_local变量。那个设计有多糟糕?有什么陷阱吗?