向作为道具传递的组件添加额外的道具
Adding additional props to a component passed as a prop
我在 react-redux 应用程序中使用 React Table along with React Custom Scrollbars。要连接这两者,我需要在 react table 中覆盖 TbodyComponent,这样我就可以用滚动条包装默认的 tbodyComponent 并传递额外的道具来调整渲染。这是一些精简的代码:
import React from 'react'
import ReactTable from 'react-table'
import {ReactTableDefaults} from 'react-table'
import { Scrollbars } from 'react-custom-scrollbars'
const TableBody = props => {
//get additional props beyond just props.children here
const {autoHeight} = props
return (
<Scrollbars
style={{
height: '100vh'
}}
>
<ReactTableDefaults.TbodyComponent>
{props.children}
</ReactTableDefaults.TbodyComponent>
</Scrollbars>
)
}
const Table = props => {
//props stuff would go here
return (
<div className="react-table-wrapper">
<ReactTable {...props}
TbodyComponent={TableBody} //this works
//TbodyComponent={(props) => {return (<TableBody autoHeight={props.autoHeight} children={props.children} />)}} //this doesn't
data={data}
columns={columns}
...
/>
</div>
)
}
我猜我不理解在 TbodyComponent 属性、props.children 或类似的东西中传递组件的正确方法。这种方法最终会永远循环。
在这个例子中,如何让 autoHeight 属性通过?
更新:尝试了 createElement 和 cloneElement,仍然收到 130 错误。
为什么这不起作用?
TbodyComponent={<TableBody autoHeight={props.autoHeight} />}
此外,我认为您不需要通过 props.children - 默认情况下应该会发生。
作为参考,我查看了此处对类似问题的回答:
解决方法是将TableBody无状态组件转换为完整组件,即
class TableBody extends React.Component {
而不是
const TableBody = props => {
这就是 React-Table 所期待的。
试试这个
<ReactTable TbodyComponent={v => <DropTbody test={null} />}
我在 react-redux 应用程序中使用 React Table along with React Custom Scrollbars。要连接这两者,我需要在 react table 中覆盖 TbodyComponent,这样我就可以用滚动条包装默认的 tbodyComponent 并传递额外的道具来调整渲染。这是一些精简的代码:
import React from 'react'
import ReactTable from 'react-table'
import {ReactTableDefaults} from 'react-table'
import { Scrollbars } from 'react-custom-scrollbars'
const TableBody = props => {
//get additional props beyond just props.children here
const {autoHeight} = props
return (
<Scrollbars
style={{
height: '100vh'
}}
>
<ReactTableDefaults.TbodyComponent>
{props.children}
</ReactTableDefaults.TbodyComponent>
</Scrollbars>
)
}
const Table = props => {
//props stuff would go here
return (
<div className="react-table-wrapper">
<ReactTable {...props}
TbodyComponent={TableBody} //this works
//TbodyComponent={(props) => {return (<TableBody autoHeight={props.autoHeight} children={props.children} />)}} //this doesn't
data={data}
columns={columns}
...
/>
</div>
)
}
我猜我不理解在 TbodyComponent 属性、props.children 或类似的东西中传递组件的正确方法。这种方法最终会永远循环。
在这个例子中,如何让 autoHeight 属性通过?
更新:尝试了 createElement 和 cloneElement,仍然收到 130 错误。
为什么这不起作用?
TbodyComponent={<TableBody autoHeight={props.autoHeight} />}
此外,我认为您不需要通过 props.children - 默认情况下应该会发生。
作为参考,我查看了此处对类似问题的回答:
解决方法是将TableBody无状态组件转换为完整组件,即
class TableBody extends React.Component {
而不是
const TableBody = props => {
这就是 React-Table 所期待的。
试试这个
<ReactTable TbodyComponent={v => <DropTbody test={null} />}