问题标签 [react-state]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
1042 浏览

reactjs - 如果没有 shouldComponentUpdate,React 0.14 的无状态组件将如何提供性能改进?

自从我阅读 React 0.14 的发行说明(和其他相关炒作)以来,这个问题一直在我脑海中转来转去——我是 React 的忠实粉丝,我认为无状态组件(https://facebook.github。 io/react/blog/2015/09/10/react-v0.14-rc1.html#stateless-function-components)是一个很好的主意,无论是为了便于编写此类组件,还是为了在代码中表达这些组件的意图对于相同的道具数据,组件应该是“纯”的。

问题是:React 怎么可能优化这些无状态的组件功能,而无需全力以赴并假设 props 引用不仅是不可变的,因为它们不应该在组件内被操纵,而且它们永远不会改变在组件生命周期之外?“常规”组件(也称为有状态组件——换句话说,贯穿整个生命周期的组件;componentWillMount、getInitialState 等)具有可选的“shouldComponentUpdate”函数的原因是 React没有假设所有的 props 和 state 引用都是完全不可变的。渲染组件后,props 引用的某些属性可能会发生变化,因此相同的“props”实例稍后可能具有不同的内容。这就是为什么人们对使用完全不可变的结构有很多兴奋的部分原因,以及为什么有人说将 Om 与 React 结合使用可以提供巨大的性能提升;因为那里使用的不可变结构保证了任何对象的任何给定实例永远不会被改变,所以 shouldComponentUpdate 可以对 props 和 state 执行非常便宜的引用相等检查(http://swannodette.github.io/2013/12/17/the -future-of-javascript-mvcs/)。

我一直在尝试找到有关此的更多信息,但一无所获。如果不假设 props 数据将由不可变类型组成,我无法想象围绕无状态组件可以做出哪些性能改进也许对非不可变 props 类型进行一些初步分析,以尝试猜测“props”和“nextProps”是否代表相同的数据?

我只是想知道是否有人对此有任何内幕消息或其他一些启发性的见解。如果 React确实开始要求 props 类型是“完全不可变的”(允许引用相等比较以确认数据没有改变),那么我认为这将是一个很大的进步,但它也可能是一个很大的变化。

0 投票
20 回答
322153 浏览

javascript - React - 改变一个不受控制的输入

我有一个简单的反应组件,我相信它有一个受控输入的表单:

当我运行我的应用程序时,我收到以下警告:

警告:MyForm 正在更改要控制的文本类型的不受控制的输入。输入元素不应从不受控切换到受控(反之亦然)。决定在组件的生命周期内使用受控输入元素还是不受控输入元素

我相信我的输入是受控的,因为它具有价值。我想知道我做错了什么?

我正在使用 React 15.1.0

0 投票
2 回答
13504 浏览

reactjs - 更改值后反应组件未更新

在 ReactJS 中,我正在编写一个无状态组件;
因为我读过避免不必要的状态是最佳实践。

该组件表示当输入框包含值时执行功能的输入字段。

现在,我创建了另一个组件,它只是用于测试上述组件的示例。如下所示:

因此,我将 绑定value到组件中的自定义变量,当输入字段的内容发生更改时,该变量会更改。

为什么输入字段组件不使用新用户名更新自己?

亲切的问候,

0 投票
1 回答
440 浏览

reactjs - React/Meteor - 来自 props 的 this.state 未定义

我需要将道具传递给我的初始状态以进行编辑表单(因为我希望表单的值等于状态)但我似乎无法让它工作。该组件没有将道具提供给initialState,因为它首先加载一个空道具,我认为是由于createContainer。我尝试了很多东西(componentDidMount、WillMount、WillReceiveProps...),但没有成功。代码如下,有什么帮助吗?

我还尝试将道具作为 defaultValue 传递并将状态保持为值,但它不允许在表单上同时具有这两者。知道如何解决我的问题吗?提前致谢。

0 投票
2 回答
1667 浏览

javascript - 如何使用 Immutability Helper 更新多个状态 | 反应 JS

我是 Immutability Helper React 库的新手,我正在尝试同时更新多个状态值,但只有最后一个调用方法状态正在更新。

这是我尝试过的:

0 投票
14 回答
307336 浏览

javascript - React 中的 useState() 是什么?

我目前正在学习 React 中的钩子概念并试图理解下面的示例。

上面的例子增加了处理函数参数本身的计数器。如果我想在事件处理函数中修改计数值怎么办

考虑下面的例子:

0 投票
1 回答
34 浏览

reactjs - 通过三元运算符在登录寄存器和主页之间切换

我正在尝试使用三元运算符在登录、注册和主页表单之间切换。但是,当我编译时,有一个错误说'this.state.route === signIn'这是一个保留关键字。我知道,保留关键字是什么,但我不明白为什么它分配这个而不是检查条件,任何人都可以帮助更正我的代码吗?

0 投票
1 回答
155 浏览

reactjs - React Native 忽略了状态变化

请解释为什么这不起作用。我正在尝试在 React 中按下按钮时用另一个元素替换一个元素,并且根据所有文档,我正在做的事情应该有效。然而,React 完全忽略了状态变化并且拒绝重新渲染一个元素。这是我的文件:

顶部的登录按钮应该会改变状态并导致登录表单出现并且注册表单消失,而注册按钮应该做相反的事情。如果我console.log改变后的状态,它已经改变了,但没有其他任何事情发生。到底是怎么回事?所有文档都表明您可以做到这一点,但它对我不起作用。我正在通过 Expo 在 Android 手机上运行该应用程序。

0 投票
0 回答
22 浏览

reactjs - 传递数据

我的任务是使用 iTunes API 创建一个 SPA。

我完成了基本功能,但还不是 SPA,我想实现 react-router 来处理导航。但是,我的组件现在需要一个额外的父级。而且我不太明白如何传递以前的工作数据。

我不想注入大量代码,所以我宁愿给你一个 Github 链接,它是: 我的 SPA

但是,如果您需要这些片段,请告诉我,我会介绍的。

0 投票
2 回答
2585 浏览

reactjs - ComponentDidUpdate 和 prevState

这是场景。我有一个父组件,一个子组件。父组件执行 ajax 调用并将数据下推给子组件。

当子组件接收到新数据时,在(子组件的)componentDidUpdate 中,我将重新设置其内部状态。

我想不出我需要在 componentDidUpdate (孩子的)内部检查的情况

prevState !== this.state

这是因为当我将新数据传递给子组件时,this.state 将等于 prevState(这将是旧状态,在接收新数据之前);即在我运行上述 setState 之前,prev 和 current 状态将保持不变。

因此我的问题是,在什么情况下我需要检查 prevState != this.state ?