ReactJS:警告:setState(...):无法在现有状态转换期间更新

2023-11-24

我正在尝试从渲染视图重构以下代码:

<Button href="#" active={!this.state.singleJourney} onClick={this.handleButtonChange.bind(this,false)} >Retour</Button>

绑定在构造函数内的版本。原因是渲染视图中的绑定会给我带来性能问题,尤其是在低端手机上。

我创建了以下代码,但我不断收到以下错误(很多)。看起来应用程序陷入了循环:

Warning: setState(...): Cannot update during an existing state transition (such as within `render` or another component's constructor). Render methods should be a pure function of props and state; constructor side-effects are an anti-pattern, but can be moved to `componentWillMount`.

下面是我使用的代码:

var React = require('react');
var ButtonGroup = require('react-bootstrap/lib/ButtonGroup');
var Button = require('react-bootstrap/lib/Button');
var Form = require('react-bootstrap/lib/Form');
var FormGroup = require('react-bootstrap/lib/FormGroup');
var Well = require('react-bootstrap/lib/Well');

export default class Search extends React.Component {

    constructor() {
        super();

        this.state = {
            singleJourney: false
        };

        this.handleButtonChange = this.handleButtonChange.bind(this);
    }

    handleButtonChange(value) {
        this.setState({
            singleJourney: value
        });
    }

    render() {

        return (
            <Form>

                <Well style={wellStyle}>

                    <FormGroup className="text-center">

                        <ButtonGroup>
                            <Button href="#" active={!this.state.singleJourney} onClick={this.handleButtonChange(false)} >Retour</Button>
                            <Button href="#" active={this.state.singleJourney} onClick={this.handleButtonChange(true)} >Single Journey</Button>
                        </ButtonGroup>
                    </FormGroup>

                </Well>

            </Form>
        );
    }
}

module.exports = Search;

看来您不小心调用了handleButtonChange方法在你的渲染方法中,你可能想要做onClick={() => this.handleButtonChange(false)}反而。

如果您不想在 onClick 处理程序中创建 lambda,我认为您需要有两个绑定方法,每个参数一个。

In the constructor:

this.handleButtonChangeRetour = this.handleButtonChange.bind(this, true);
this.handleButtonChangeSingle = this.handleButtonChange.bind(this, false);

并且在render method:

<Button href="#" active={!this.state.singleJourney} onClick={this.handleButtonChangeSingle} >Retour</Button>
<Button href="#" active={this.state.singleJourney} onClick={this.handleButtonChangeRetour}>Single Journey</Button>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ReactJS:警告:setState(...):无法在现有状态转换期间更新 的相关文章

  • React NotFoundError:无法在“Node”上执行“insertBefore”:要插入新节点的节点不是该节点的子节点

    当我在 React 中内置的 Aframe 资产管理器中更新新资产时 出现此 notFound 错误 资产管理器组件的构建如下 export class Assets extends PureComponent render const h
  • 带有委托构造函数的构造函数初始化列表执行顺序

    我有一个棘手的 C 问题 当您有一个带有委托构造函数的构造函数初始化列表时 列表执行顺序是什么 这里存在两个相互冲突的标准规则 1 构造函数初始化列表不是按列表顺序执行 而是按项目的声明顺序执行 2 构造函数初始化列表中的委托构造函数总是在
  • React-native:发送日志时出现问题 - console.error

    我正在使用 Expo React Native 我正在尝试使用 axios 向我的 Express 服务器发送 POST 请求 App js 在我的 React 中 Axios url http 172 20 1 19 3001 api t
  • Material UI 自动完成:将值与状态同步

    如何存储值Material UI 的自动完成 https material ui com components autocomplete 进入React的状态 自动完成使用多选并具有字符串数组作为值 功能组件示例 在此示例中 我们将显示一个
  • 更改子组件状态会更改父组件 props

    父组件是一个header 子组件是一个form它用于在保存后更改标头中出现的值 从而触发 redux 操作 我设置了子状态 constructor props super props this state object props obje
  • 对于自定义 Python 类来说,哪个更好 __repr__ ?

    看来有不同的方法 repr 函数可以返回 我有一个 InfoObj 类 它存储了很多东西 其中一些我并不特别希望该类的用户自己设置 我认识到 python 中没有任何内容受到保护 他们可以直接潜入并设置它 但似乎在中定义它 init 使得有
  • React fetch 有错误 fetch 被 CORS 策略阻止 [重复]

    这个问题在这里已经有答案了 我尝试点击登录按钮调用获取 REST 调用 但是 问题是提取失败 并在 Javascript 控制台中显示此错误消息 从源获取的访问已被 CORS 策略阻止 请求的资源上不存在 Access Control Al
  • React Router 深度链接

    这是我第一次使用 React 和 React Router 我遇到了一些深层链接问题 我构建了一个简单的 SPA 在 React Router 的帮助下 我可以导航到 mysite com work mysite com about 和 m
  • React - 防止标签切换时焦点脱离模式

    我自己构建了一个反应模式 当我在模式打开时按 Tab 键时 焦点仍然转到背景页面 如何将焦点限制在模态框内的组件内 下面的逻辑应该是什么 onKeyPress e if e keyCode 9 e preventDefault logic
  • 如何禁用和隐藏反应表的分页页脚?

    我是反应表的新手 目前 我有一个 5 行表要在反应表上渲染 并且不需要分页功能 我了解关闭分页 可以通过以下方式完成 pagination false 但是分页控件仍然显示 有办法隐藏它吗 我刚刚找到道具showPagination fal
  • 如何在reactjs中动态加载组件?

    我正在开发一个 Reactjs React motion 项目 在 模态窗口 比方说 中 我想动态安装或加载组件 如果可能的话 到目前为止我的解决方案 我找不到一种方法 所以看起来更容易将组件放置到位并隐藏它 然后在状态更改时切换类或样式
  • React 组件内的导出函数或组件外同一文件中的访问状态

    我有一个需要从文件中导出的函数 但同时 我需要在更新时利用反应状态重新渲染 似乎不太可能从类内部导出函数 那么如何从类外部的函数更新状态呢 import React Component from react export function
  • yii::app()->user->setState 在 yii 中?

    我想知道 yii 中的这个 Yii app gt user gt setState key value 如果我有一个大小为 10 的数组 并且我将该数组设置为如下状态 Yii app gt user gt setState data dat
  • 使用与打字稿反应来玩笑测试复制到剪贴板方法

    我试图确保当用户单击按钮时将正确的值复制到用户剪贴板 这是我的复制方法 我在输入上使用 ref 来访问正确的值 protected copyToClipboard console log clicked const text this co
  • 在next.js中获取客户端当前的url

    因此 我正在开发一个 Nodejs 应用程序 我将在该应用程序上建立我的新网站 并且我想为客户端的用户提供一种显示不同内容的方法 根据用户按下的内容重新呈现 我的想法是 例如 首先用户会看到 请先选择一个工具 然后用户将在导航栏中选择一个工
  • 在 React 中渲染来自 Firebase 的数据

    请帮助我渲染从 Firebase 实时数据库检索的数据 我成功从 Firebase 中以数组形式检索数据 下一步是显示数据 问题就从这里开始了 我想要显示的数据应该存储在 模块 状态 首先 它被设置为一个空数组 然后检索数据 通过 Coum
  • React Native FlatList 样式

    我正在尝试获取列表的 HeaderComponent 旁边的 FlatList 项目 我希望房间从创建房间旁边开始 这是它的外观图像 1 https i stack imgur com qyZZP png https i stack img
  • 如何使用 Jest 监视默认导出函数?

    假设我有一个导出默认函数的简单文件 UniqueIdGenerator js const uniqueIdGenerator gt Math random toString 36 substring 2 8 export default u
  • 使用双花​​括号初始化向量

    有人可以解释下面示例中使用双花括号和单花括号初始化之间的行为差 异吗 Code 1 vector
  • 每次页面重新加载时都会出现新的 Google 登录库提示

    在我的项目中 我使用常规弹出客户端 JS 身份验证 平台客户端 https developers google com identity sign in web sign in 我从旧版 Google Sign 迁移到新版 Google I

随机推荐

  • VueJS v-bind:背景图像的样式:url()

    根据VueJS docs div div 我尝试过几种模式 div div div div div div 但结果对于 HTML 无效style属性 有任何想法吗 尝试其他模式后 这是有效的模式
  • 使用 OCR 从图像文件读取文本的 API

    我正在寻找 Java 中 OCR 光学字符识别 的示例代码或 API 名称 使用它我可以从图像文件中提取所有文本 无需将其与我使用下面的代码所做的任何图像进行比较 public class OCRTest static String STR
  • 如何禁用 Django Celery 管理模块?

    我不需要 Django 管理中的 celery 模块 有什么办法可以将其删除吗 更具体地说 在admin py里面任何应用程序的INSTALLED APPS after djcelery from django contrib import
  • adb 在 Windows 上不被识别为内部或外部命令

    我设置了c android sdk tools路径环境和命令的路径 例如emulator工作得很好 但是adb命令仍然无法识别 我该怎么办 In the path系统变量我添加了android sdk路径和tools到目前为止的路径 还有什
  • 在 Node.js 中使用远程图像提供动态生成的 PDF

    我正在尝试创建一个节点服务器 使用以下命令即时生成 PDFPDFKit PDF 是根据 POST 请求的参数生成的 通过Express 其中一个参数指定图像 URL 服务器将下载该图像 URL 并将其注入到 PDF 中 现在 我有以下结构
  • 无法找到包 NETStandard.Library

    我尝试在 Visual studio 2019 中添加一个新的类库 Net Standard 但我得到这个错误信息 无法找到包 NETStandard Library 不存在任何软件包 此 id 来源 Microsoft Visual St
  • 将 JSON 字符串发布到 WEB API

    我有一个ASP NET WEB API 2需要有一个应用程序POST方法接受一个JOSN string结构未知javascript 我启用了cors and GET方法工作正常 但是发送时JSON从客户端 api 的方法参数始终是null
  • Mongoose Typescript 方式...?

    尝试在 Typescript 中实现 Mongoose 模型 搜索 Google 只发现了一种混合方法 结合 JS 和 TS 如果没有 JS 按照我相当幼稚的方法 如何实现 User 类呢 希望能够没有包袱的IUserModel impor
  • jQuery 打开按按钮选择

    如何通过按钮打开选择下拉菜单 button on click function select trigger click 我的代码 http jsfiddle net UGkWp UPDATE 我找到了针对 webkit 浏览器的解决方案
  • 传递到字典中的模型项的类型为“System.Data.Entity.DynamicProxies.Object”

    有谁知道为什么我会收到此错误 The model item passed into the dictionary is of type system Data Entity DynamicProxies Object 3E186F80358
  • java中的KeyPressed事件

    我刚刚创建了一个java tic tac toe 游戏 我想弄清楚在特定条件下按下回车键后如何运行一个方法 示例如下 if condition is met keyListener 根据您想要捕获 enter 键的位置 您可以使用Actio
  • 清除 Magento 缓存

    我正在使用 Magento 1 6 1 版 我需要以编程方式清除 Magento 缓存 Mage app gt getCache gt clean 我使用了上面的代码 但它没有清除缓存 try this Mage app gt cleanC
  • 如何正确更新我的图表值? (实时)

    我最近遇到了一个名为 LiveChart 的工具 并决定对其进行测试 不幸的是 我在弄清楚如何实时更新图表值时遇到了一些问题 我很确定有一种干净且正确的方法可以做到这一点 但我无法找到它 我希望能够通过更新值private void或按钮
  • ExtJs:在组合框中搜索/过滤

    我在 ExtJs 2 3 中遇到以下问题 我想在组合框中进行搜索 我给你举个例子 Ext comboData names Peter Paul Amanda var store new Ext data SimpleStore fields
  • surfaceView.getHolder 不返回 SurfaceHolder

    我正在尝试编写一个使用相机的应用程序 当尝试获取最终传递给启动相机的 surfaceCreated 的 surfaceHolder 时 我收到 NullPointerException getHolder 是否有返回NULL的情况 than
  • 如何连接 sparql 中的值列表?

    假设我有一个urihttp dbpedia org page Manmohan Singh现在他的标签 dbpprop years 中有一个年份列表 当我写一个查询时 PREFIX rdf
  • 在匿名方法中使用 MethodInfo.GetCurrentMethod()

    public static void Main string args Action a gt Console WriteLine MethodInfo GetCurrentMethod Name a 这段代码将返回一个模糊的字符串 如下所
  • CORS - 是客户端、服务器端还是传输层? [复制]

    这个问题在这里已经有答案了 我试图理解CORS 根据我的理解 它使您能够限制哪些域可以访问服务器上的资源 然而 这似乎并不是故事的全部 例如 我有一个未启用 CORS 的 Web 服务 我无法通过 jQuery 从我的 Web 应用程序访问
  • 具有自签名证书的 Python 3 urllib

    我正在尝试使用 Python 从内部服务器下载一些数据 由于它是内部的 因此它使用自签名证书 我们不想为永远不会出现在 野外 的服务器付费 Python 2 6 版本的代码运行良好 response urllib2 urlopen URL
  • ReactJS:警告:setState(...):无法在现有状态转换期间更新

    我正在尝试从渲染视图重构以下代码