reactjs - 为什么react-table会出现错误 "react is undefined"

标签 reactjs react-table

我正在尝试将react-table集成到我的应用程序中,但在import { useTable } from 'react-table'行上收到错误。

TypeError: React is undefined

错误发生在 var safeUseLayoutEffect = typeof document !== 'undefined' ? React.useLayoutEffect : React.useEffect; 行上在react-table.development.js中。

为什么 react 本身是未定义的?


import React from 'react'
import ReactDOM from 'react-dom'
import PropTypes from 'prop-types'

import { useTable } from 'react-table'


export default class Taxonomies extends React.Component {

    taxonomyRows = () => {
        return data = React.useMemo(
            () => [
            {
                full_code: '1',
                level1: 'a',
                level2: 'b',
                level3: 'c',
                level4: 'd'
            },
            {
                full_code: '2',
                level1: 'e',
                level2: 'f',
                level3: 'g',
                level4: 'h'
            },
            {
                full_code: '3',
                level1: 'i',
                level2: 'j',
                level3: 'k',
                level4: 'l'
            },
            ],
            []
        )
    }

    taxonomyColumns = () => {
        return columns = React.useMemo(
          () => [
            {
              Header: 'Full Code',
              accessor: 'full_code',
            },
            {
              Header: 'Level 1',
              accessor: 'level1',
            },
            {
              Header: 'Level 2',
              accessor: 'level2',
            },
            {
              Header: 'Level 3',
              accessor: 'level3',
            },
            {
              Header: 'Level 4',
              accessor: 'level4',
            },
          ],
          []
        )
    }


    render = () => {
        const columns = this.taxonomyColumns()
        const data = this.taxonomyRows()
        const {
            getTableProps,
            getTableBodyProps,
            headerGroups,
            rows,
            prepareRow,
        } = useTable({ columns, data })

        return (
            <div> x</div>
        )
    }
}

最佳答案

我按照https://github.com/tannerlinsley/react-table/discussions/2048中的说明解决了这个问题。

config/webpack/environment.js

const nodeModulesLoader = environment.loaders.get('nodeModules');
if (!Array.isArray(nodeModulesLoader.exclude)) {
  nodeModulesLoader.exclude = nodeModulesLoader.exclude == null ? [] : [nodeModulesLoader.exclude];
}

nodeModulesLoader.exclude.push(/react-table/);

如果我理解正确的话,问题是 webpacker 转译 React-table 的结果,我们通过将其排除在转译之外来解决它。

Firefox 最初给了我一个“React 未定义”错误,但在 Chrome 中查看该页面时,我看到了“无法读取未定义的属性‘useLayoutEffect’”

关于reactjs - 为什么react-table会出现错误 "react is undefined",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61742874/

相关文章:

javascript - 如何在排序时设置 react 表标题的样式

reactjs - 更新 componentDidMount 中的状态属性未反射(reflect)在 react 表中

node.js - 如何使用 webpack-dev-server 设置 create-react-app

javascript - 使用 React,渲染具有多个嵌套元素的元素的正确方法是什么?

javascript - 检查用户是否首次使用react-native访问应用程序

reactjs - react 表无法正确排序十进制数字

reactjs - 如何在 react-table v-7 中添加具有不同值的子行?

reactjs - 如何在 React 和 Typescript 中映射我的联合类型 GraphQL 响应数组

javascript - Firebase -- 批量删除子节点

javascript - TypeError : Object(. ..) 不是 React Table 和 moment.js 的函数