使用继承的 ES6 React 类时未触发 componentDidMount 方法

2024-05-07

我试图在 React 中使用 ES6 类,并希望所有组件都继承某些方法,但是一旦我尝试扩展扩展 React.Component 类的组件, componentDidMount 方法就不会触发,因此什么也不会发生被渲染。我正在使用的代码:

基础组件.jsx

import React from 'react';

class BaseComponent extends React.Component {

    constructor() {
        super();   
        console.log('BaseComponent constructor');
     }

     render() {
         return (
             <div>Hello, Im the base component</div>  
         );
     }
}

export default BaseComponent;

示例组件.jsx

import BaseComponent from './BaseComponent';

class ExampleComponent extends BaseComponent {
     constructor(props) {

        super(props);
     }

     componentDidMount() {
         console.log('exampleComponent mounted');
     }

    render() {
        return (
            <div>Hello, Im the example component</div>  
        );
    }
}

export default ExampleComponent;

App.jsx

import React from 'react';
React.render(<ExampleComponent />, document.body);

我正在使用 React 0.13.3,并使用 babelify 6.1.2 进行转译。

字符串“exampleComponent Mounted”永远不会记录到控制台,并且不会呈现任何内容。有什么想法我做错了吗?


我不确定该方法,但这段代码也有效:

export default class Service extends BaseComponent {
  componentDidMount(...args) {
    super.componentDidMount.apply(this, args);
  }
}

UPD:但这被认为是一种不好的做法:

a) https://medium.com/@dan_abramov/how-to-use-classes-and-sleep-at-night-9af8de78ccb4 https://medium.com/@dan_abramov/how-to-use-classes-and-sleep-at-night-9af8de78ccb4 b) https://medium.com/@dan_abramov/mixins-are-dead-long-live-higher-order-components-94a0d2f9e750 https://medium.com/@dan_abramov/mixins-are-dead-long-live-higher-order-components-94a0d2f9e750

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用继承的 ES6 React 类时未触发 componentDidMount 方法 的相关文章

  • 无需编译的 ES6 单元测试

    我无法找到任何 Mocha 或任何其他通过 Gulp 直接在 ES6 代码上运行的单元测试框架的示例 没有 Babel Webpack 等 我找到了一个在浏览器中使用 ES6 代码运行 Mocha 的示例 经过一些修改 但它不是自动化的 有
  • 设置状态时重新渲染过多 - useSWR

    我在用useSWR https swr vercel app docs data fetching获取数据 然后使用数据 我想通过使用reduce 获得总计 如果我 console log 输出该值 它工作正常 但一旦我尝试使用该值设置状态
  • 在反应中访问回调内的 event.target

    我有以下课程片段 constructor props super props this timeout null search e gt clearTimeout this timeout this timeout setTimeout f
  • 如何在 React Native 中使用相同的 Firebase 数据库在两个应用程序之间进行通信?

    我有两个不同的应用程序使用相同的实时数据库 在第一个应用程序中 我发送的订单包含一些要保存在数据库中的数据字段 在另一个应用程序中 我只添加一个侦听器 firebase database ref userOrder currentUser
  • 是的,验证 2 个以上相关输入

    我正在使用 yup 和 formik 来管理我的表单 我使用 yup 进行表单验证 我面临的问题是 假设我有三个字段fieldA fieldB and fieldC 验证是 fieldA fieldB必须等于fieldC 这是我所做的使用
  • require('babel/register') 不起作用

    我在客户端上有一个用 ES6 编写的同构应用程序Babel 转译器 http babeljs io 我希望我的 Express 服务器具有与客户端代码相同的 ES6 语法 很遗憾require babel register 不起作用 服务器
  • 如何在useEffect中调用useNavigate? - 用于 Ant Design - Mobile 中的底部导航

    我是反应新手 我正在使用 AntD mobile 制作一个应用程序 对于底部导航 我正在利用AntD mobile 中的 tabBar 组件 https mobile ant design components tab bar 我不知道如何
  • 找不到 -lDoubleConversion 的库

    我尝试在 XCode 上构建 但是ld library not found for lDoubleConversion发生错误 我可以建造react native run ios 这可行 但 XCode 无法构建 ld 警告 找不到选项 L
  • ES6 类文字中的 IIFE

    在 ES5 中我们都可以这样做 myClass prototype myMethod function return function 我可以对 ES6 类文字执行同样的操作吗 不 至少现在还没有 ES6 类仅支持声明方法 因此任何不直接为
  • 如何使用 Draft-js-mention-plugin 以编程方式添加提及?

    问题 我正在尝试为使用创建的内容创建一个编辑界面draft js draft js mention plugin 然而 editorState没有持久化 只有纯文本 提及被保存为对象数组 现在我需要使用该数据重新创建 editorState
  • 如何在react.js中将/n替换为换行符?

    我正在尝试更换每一个 n to a br tag in ReactJS In my note note对象有一个包含多个的字符串 n in it 示例注释 注释 test ntest ntest 我尝试过的ReactJS note note
  • 异步减少返回承诺

    我有一个对象数组 我必须为来自异步函数的每个对象添加一个属性 我正在执行 Array reduce 来迭代每个元素并仅返回一个结果 具有新属性的一个对象数组 我有这个 const res await resultOne reduce asy
  • for 循环内的 Promise 的 setTimeout

    我想做的是这样的 循环数据集合 对于每个数据元素调用 API 等待 Promise 失败或解析 暂停 30 秒 然后对下一个数据元素再次执行此操作 直到没有任何内容可以迭代集合 最后显示 完成 消息 到目前为止 这是我编写的代码 在其他问题
  • 如何解密会话令牌(Next-auth JWT 令牌)

    我正在我的下一个应用程序中控制用户身份验证next auth library 我正在使用credentials provider 首先 我调用返回用户信息的登录端点 然后获取访问令牌并将其放入由next auth callback 这是我的
  • 使用 Webpack 代理创建 React 应用程序中的 WebSockets

    我使用版本 3 1 2 2019 年 9 月 19 日 中的 Create React App 创建了我的 React 应用程序 我试图为 Web Socket 请求配置代理 但似乎当我使用代理时 未建立连接 我用过THIS https g
  • 为什么 `obj.foo = function() { };` 没有将名称 `foo` 分配给函数?

    从 ES2015 ES6 开始 函数有了专有名称 包括官方名称 name属性 而函数创建时的赋值除了明显的函数声明和命名函数表达式之外还有多种方式 比如给变量赋值 函数的名字设置为变量的名字 给对象属性赋值 函数的名称设置为属性的名称 甚至
  • ref scrollIntoView 不适用于反应上的平滑行为

    我正在创建一个组件 该组件将保存动态元素列表 出于样式原因 我需要将每个部分的标题保留在粘性导航菜单中 当用户上下滚动部分列表时 我需要应用样式规则 并将菜单导航中的同一部分带入视图 因此我尝试将scrollIntoView与菜单部分引用一
  • 单击react.js 切换列表的背景颜色

    我正在尝试创建一个具有以下功能的列表 悬停时更改列表项的背景颜色 单击时更改列表项的背景颜色 在单击的元素之间切换背景颜色 即列表中只有一个元素可以具有 clicked 属性 我已经执行了 onhover 1 和 2 功能 但无法实现第三个
  • VSCode 不会从 Next.js 项目中的“react”自动导入

    This is not的副本这个问题 https stackoverflow com questions 71476308 how to stop vs code importing react methods from minified
  • 在 createAsyncThunk 上调度操作?

    我有一个 thunk 动作是由createAsyncThunk 我想在调用 api 更新状态之前调度一个操作 我不想使用动作getProducts pending因为我想要派遣actionLoading 对于其他 thunk 操作 我怎样才

随机推荐