【发布时间】:2020-11-04 22:40:52
【问题描述】:
我是 Fluent UI React 组件的新手。我正在尝试在命令栏控件上实现 React Router,来自流利的 UI 反应发现 here 它是带有溢出菜单项的命令栏。如果我想使用菜单项导航到不同的页面,我使用 history.push("/myLink") 解释here。但为了使该工作正常进行,我需要访问功能组件中的 useState 。代码如下所示:
export const CommandBarBasicExample: React.FunctionComponent = () => {
const [refreshPage, setRefreshPage] = useState(false);
return (
<div>
<CommandBar
items={_items}
overflowItems={_overflowItems}
overflowButtonProps={overflowProps}
farItems={_farItems}
ariaLabel="Use left and right arrow keys to navigate between commands"
/>
</div>
);
};
const _items: ICommandBarItemProps[] = [
{
key: 'newItem',
text: 'New',
cacheKey: 'myCacheKey', // changing this key will invalidate this item's cache
iconProps: { iconName: 'Add' },
subMenuProps: {
items: [
{ //first item in the menu
key: "AddProperty",
text: "Properties",
iconProps: { iconName: "Add" },
["data-automation-id"]: "newProperty", // optional
onClick: ()=>{handleclick()
setRefreshPage(true);
};
{
key: 'calendarEvent',
text: 'Calendar event',
iconProps: { iconName: 'Calendar' },
},
],
},
},
我遇到的问题是,如果我使用 setRefreshPage(true) VS 代码抱怨状态变量无法识别。如果我将 useState 放在其他地方,则对非法使用 useState 的投诉做出反应。如何让 useState 在 const _items 对象中可用? 任何帮助将不胜感激。
【问题讨论】:
-
你为什么不用哈希路由器?
-
嗨,我正在使用 Hash 路由器,但它仍然无法正常工作 :-(.
-
你能解释一下这个问题 - 你只是想在命令栏按钮点击上导航吗?
-
确实!如果我单击命令栏项,我想导航到属性组件。该组件包含我的业务逻辑。但是当我单击按钮时,什么也没有发生。我使用 Create react app 和 typescript 重建应用程序,以查看它在浏览器中的行为。如果我使用 BrowserRouter 并使用 history.push("/Properties") 它会更改页面顶部的 URL,但不会刷新。因此我需要触发一个 useState 但我无法访问 _items [] 对象中的 useState。我希望这是有道理的?
-
为什么你需要推送到历史?在那个表面上,您无论如何都无法访问后退按钮?
标签: reactjs office-js fluent-ui