我正在使用 Docusaurus,它提供了一个siteConfig.js
作为配置道具。因此,我必须使用这些道具来构建我的站点组件。工作代码的格式如下:
const React = require("react");
class SamplePage extends React.Component {
render() {
const siteConfig = this.props.config;
return <div>{siteConfig.title}</div>;
}
}
module.exports = SamplePage;
我在这个问题中显示了另一段工作代码,但它使用了不同的设置 where const {useState} = React;
is used in place ofconst React = require("react");
和<div id="root">
with ReactDOM.render(<SamplePage/>, document.getElementById("root"));
in place of module.exports = SamplePage;
。我知道这允许在 SE 上运行代码片段,但它没有向我展示导入和导出应该如何在这个 Docusaurus 项目的上下文中运行。我想要做的是将代码段合并到React.Component
或以其他方式构造此组件以使用useState
带有配置道具的钩子来断言或拒绝3 个标签的isOpen
属性,使用 2 (s) 来控制钩子:detail
button
const {useState} = React;
const SamplePage = () => {
const [isOpen, setIsOpen] = React.useState(false);
return (
<div>
<details open={isOpen}>
<summary>
First text detail.
</summary>
<p>testing</p>
</details>
<details open={isOpen}>
<summary>
Second text detail.
</summary>
<p>testing</p>
</details>
<details open={isOpen}>
<summary>
Third text detail.
</summary>
<p>testing</p>
</details>
<button onClick={() => setIsOpen(false)}>Open All Details.</button>
<button onClick={() => setIsOpen(true)}>Close All Details.</button>
</div>
);
}
ReactDOM.render(<SamplePage/>, document.getElementById("root"));
对于代码片段:
<div id="root"></div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.9.0/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.9.0/umd/react-dom.production.min.js"></script>
我的问题是如何组合这些代码段。我尝试以多种不同的方式构建此组件,但我无法让button
(s) 触发onClick()
效果。例如,我试过:
const React = require("react");
const SamplePage, {useState} = () => {
const [isOpen, setIsOpen] = React.useState(false);
const siteConfig = this.props.config;
return (
<div>
<details open={isOpen}>
<summary>
First text detail.
</summary>
<p>testing</p>
</details>
<details open={isOpen}>
<summary>
Second text detail.
</summary>
<p>testing</p>
</details>
<details open={isOpen}>
<summary>
Third text detail.
</summary>
<p>testing</p>
</details>
<button onClick={() => setIsOpen(false)}>Open All Details.</button>
<button onClick={() => setIsOpen(true)}>Close All Details.</button>
</div>
);
}
module.exports = SamplePage;
当然,这会引发“无效的挂钩调用”,因为我实际上无法useState
在当前设置中使用挂钩。我在所有其他构造中都得到了意外的标记和引用错误。