因此,我一直在尝试实现这样的想法,即每当用户单击 DetailsList 中的任何行时,按钮都会启用,而当用户在选择区域之外单击时,按钮会被禁用。
这是我的代码
import { DetailsList, SelectionMode, Selection, ISelection, initializeIcons, PrimaryButton } from '@fluentui/react'
import {useMemo } from 'react'
import { useBoolean } from '@uifabric/react-hooks'
interface ICurrency {
type: string,
amount: number
}
function App() {
initializeIcons()
const [isBtn, { setTrue: disableBtn, setFalse: enableBtn }] = useBoolean(true)
const items: ICurrency[] = [
{
type: 'INR',
amount: 20
},
{
type: 'USD',
amount: 50
},
{
type: 'GBP',
amount: 70
}
]
const selection: ISelection = useMemo(() => new Selection(
{
onSelectionChanged: ()=>{
if(selection.getSelectedCount() > 0){
enableBtn()
}else{
disableBtn()
}
}
}
), [items])
return (
<div className="App">
<PrimaryButton text="Button" disabled={isBtn}/>
<DetailsList
items={items} selectionMode={SelectionMode.single}
selection={selection}
/>
</div>
);
}
export default App;
我什至使用了 useMemo 并继续敲打我的头,但问题仍然存在,单击任何行,状态丢失并且按钮未启用。我已经尝试过存储选择状态,计数,一切,但似乎我错过了一些对实施至关重要或基本的东西