【问题标题】:How to hide sidebar in React using Ant Design如何使用 Ant Design 在 React 中隐藏侧边栏
【发布时间】:2019-12-13 19:30:55
【问题描述】:

我正在尝试做一个侧边栏,它会在单击导航栏中的图标时隐藏。而且我不想使用类,也许我这样做是错误的,但我想尽可能地保留它。我有一个错误提示:

(属性)折叠:布尔值';'预期的.ts(1005)

在 const 切换中:

const state = {
    collapsed: true
  };

const toggle = () => {
    state.collapsed: !state.collapsed
};


const Sidebar = () => {

  return (
    <Layout.Sider collapsed={state.collapsed} style={{ backgroundColor: '#f0f0f0' }}>
     ...
    </Layout.Sider>
  )
}

在导航栏中我得到了这个:

<Button
            type="primary"
            shape="circle"
            icon="user"
            size={'small'}
            style={{ marginLeft: '10px' }}
            onClick={() => toggle}
          />

我的布局:

const Layout = ({ children }: LayoutProps) => {
  return (
    <AntdLayout>
      <AntdLayout>
        <Header />
      </AntdLayout>
      <div>{children}</div>
      <Sidebar />
    </AntdLayout>
  )
}

谢谢大家!

【问题讨论】:

    标签: javascript reactjs typescript web-applications antd


    【解决方案1】:

    我在您的代码中发现了两个问题。如果你有功能组件,你可以使用useState 来更新boolean 状态。另一个是你如何使用onClick={() =&gt; toggle},技术上你不是调用函数,只是返回。

    我认为您可以尝试以下方法 - 使用状态挂钩创建布尔变量:

    const Sidebar = () => {
       const [collapsed, setCollapsed] = useState(true);
    
       return (
          <Layout.Sider collapsed={state.collapsed} style={{ backgroundColor: '#f0f0f0' }}>
             ...
          </Layout.Sider>
       )
    }
    

    在按钮中,您可以使用如下 - 切换 collapsed 变量的值:

    <Button type="primary"
            shape="circle"
            icon="user"
            size={'small'}
            style={{ marginLeft: '10px' }}
            onClick={() => setCollapsed(!collapsed)} />
    

    在此处进一步阅读:

    1. State hook
    2. Function and Class components

    如果您对进一步感兴趣,我之前在 GitHub 上准备了一个存储库,用于展示类、功能或样式组件中的切换元素。在这里找到它:norbitrial/react-toogle-class-on-click

    我希望这会有所帮助!

    【讨论】:

    • 哦,我明白了。但是按钮在 Header 中,而 setCollapse 只能在 Sider 组件内使用。那么我应该怎么做才能使该方法可见?
    • 哦,那么有两种方法可以处理这种情况,或者在父组件中创建一个状态变量并通过props 将其传递给子组件,或者为应用程序创建一个存储 - 可能是 Redux -这将帮助您从任何组件访问collapsed 状态变量。如果情况并不复杂——就像你提到的那样——我会选择props 选项。
    猜你喜欢
    • 2011-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-16
    • 2019-03-09
    • 1970-01-01
    • 2022-07-02
    • 2019-10-22
    相关资源
    最近更新 更多