为什么 react-table 会出现错误“react 未定义”
2020-05-12
1734
我尝试将 react-table 集成到我的应用程序中,但在
import { useTable } from 'react-table'
行上出现错误。
TypeError: React 未定义
错误发生在 react-table.development.js 中的
var safeUseLayoutEffect = typeof document !== 'undefined' ? React.useLayoutEffect : React.useEffect;
行上。
为什么 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>
)
}
}
2个回答
我按照 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’”
Wonerol
2020-10-20
该问题与 React 无关,但您在基于类的组件中使用了钩子。其中
useTable
、
React. useMemo
是钩子。
相反,请将基于类的组件转换为功能组件。
const Taxonomies = () => {
....
....
return(
<div>rendering</div>
)
}
export default Taxonomies;
jogesh_pi
2020-05-12