如何在 FluentUI DetailsList onRender 函数中使用 React refs
How to use React refs inside FluentUI DetailsList onRender function
我需要在 FluentUI DetailsList 列的 onRender
函数中使用 ref。但是如果我尝试使用字符串引用:例如:ref={"myref"}
React 会抱怨 react-dom.development.js:13381 Uncaught (in promise) Error: Function components cannot have string refs. We recommend using useRef() instead. Learn more about using refs safely here:....
。如果我尝试使用 useRef,我会收到一条错误消息,指出 onRender 函数不是功能组件。如何在 FluentUI DetailsList onRender 函数中使用 refs(多个)?
有几种方法可以覆盖 DetailsList 中 rows/columns 的呈现。
要为列定义新内容,最简单的方法是在列定义中定义一个 onRender
值。例如,在此代码段中,column3
每次呈现该列中的单元格时都会调用一个函数。
const _columns = [
{ key: 'column1', name: 'Name', fieldName: 'name', minWidth: 100, maxWidth: 200, isResizable: true },
{ key: 'column2', name: 'Value', fieldName: 'value', minWidth: 100, maxWidth: 200, isResizable: true },
{ key: 'column3', name: 'Custom value with ref', fieldName: 'value', minWidth: 100, maxWidth: 200, onRender: renderColumn3 },
];
onRender
回调是用原始项目、列表中的索引和列定义调用的。从那里到 return 反应组件是微不足道的,它可以使用它需要的任何钩子(例如 useRef
)。
此示例呈现了一个使用 refs 的非常简单的组件:
const MyControlForColumn3 = props => {
const myRef = React.useRef();
return <div ref={myRef}><button onClick={() => console.log(myRef.current)}>Print ref.current to console</button>{props.children}</div>;
}
const renderColumn3 = (item: any, itemIndex: any, columnDefinition: any) => {
return <MyControlForColumn3>Item #{itemIndex}</MyControlForColumn3>
}
我需要在 FluentUI DetailsList 列的 onRender
函数中使用 ref。但是如果我尝试使用字符串引用:例如:ref={"myref"}
React 会抱怨 react-dom.development.js:13381 Uncaught (in promise) Error: Function components cannot have string refs. We recommend using useRef() instead. Learn more about using refs safely here:....
。如果我尝试使用 useRef,我会收到一条错误消息,指出 onRender 函数不是功能组件。如何在 FluentUI DetailsList onRender 函数中使用 refs(多个)?
有几种方法可以覆盖 DetailsList 中 rows/columns 的呈现。
要为列定义新内容,最简单的方法是在列定义中定义一个 onRender
值。例如,在此代码段中,column3
每次呈现该列中的单元格时都会调用一个函数。
const _columns = [
{ key: 'column1', name: 'Name', fieldName: 'name', minWidth: 100, maxWidth: 200, isResizable: true },
{ key: 'column2', name: 'Value', fieldName: 'value', minWidth: 100, maxWidth: 200, isResizable: true },
{ key: 'column3', name: 'Custom value with ref', fieldName: 'value', minWidth: 100, maxWidth: 200, onRender: renderColumn3 },
];
onRender
回调是用原始项目、列表中的索引和列定义调用的。从那里到 return 反应组件是微不足道的,它可以使用它需要的任何钩子(例如 useRef
)。
此示例呈现了一个使用 refs 的非常简单的组件:
const MyControlForColumn3 = props => {
const myRef = React.useRef();
return <div ref={myRef}><button onClick={() => console.log(myRef.current)}>Print ref.current to console</button>{props.children}</div>;
}
const renderColumn3 = (item: any, itemIndex: any, columnDefinition: any) => {
return <MyControlForColumn3>Item #{itemIndex}</MyControlForColumn3>
}