- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在与 Docusaurus 合作,它提供 siteConfig.js
作为配置 Prop 。因此,我必须使用这个 Prop 来构建我的网站组件。工作代码的格式如下:
const React = require("react");
class SamplePage extends React.Component {
render() {
const siteConfig = this.props.config;
return <div>{siteConfig.title}</div>;
}
}
module.exports = SamplePage;
我还有另一段工作代码,如 question 所示。 ,但它使用不同的设置,其中 const {useState} = React;
用于代替 const React = require("react");
和<div id="root">
与 ReactDOM.render(<SamplePage/>, document.getElementById("root"));
代替module.exports = SamplePage;
。我知道这允许在 SE 上运行代码片段,但它没有向我展示导入和导出应该如何在此 Docusaurus 项目的上下文中运行。我想做的是将代码段合并到 React.Component
中或以其他方式构造此组件以使用 useState
与配置属性 Hook 以断言或拒绝 isOpen
3 detail
的属性标签,使用 2 button
(s) 控制钩子(Hook):
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;
这当然会引发“无效的钩子(Hook)调用”,因为我实际上无法使用 useState
Hook 我当前的设置。我在所有其他结构中都遇到了意外的标记和引用错误。
最佳答案
您需要在 onClicks 中翻转 true/false bool(open 应该为 true)
请记住,您的“打开”onClick
可以很好地打开下拉菜单,但“关闭”onClick
仅在“打开”时才会关闭下拉菜单onClick
首先将状态设置为 true
如果您需要导出它而不是将其渲染到 DOM(并且不能/不想在其他地方更改为 ES6 import 语句),则将 ReactDom.render()
更改为:
module.exports = SamplePage;
完整示例:
const React = require('react')
const {useState} = React;
const SamplePage = (props) => {
const [isOpen, setIsOpen] = useState(false);
const siteConfig = 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(true)}>Open All Details.</button>
<button onClick={() => setIsOpen(false)}>Close All Details.</button>
</div>
);
}
module.exports = SamplePage;
可运行片段:
// const React = require('react')
const {useState} = React; //refer to above note
const SamplePage = (props) => {
const [isOpen, setIsOpen] = useState(false);
const siteConfig = 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(true)}>Open All Details.</button>
<button onClick={() => setIsOpen(false)}>Close All Details.</button>
</div>
);
}
ReactDOM.render(<SamplePage/>, document.getElementById("root"));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.8.4/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.8.4/umd/react-dom.production.min.js"></script>
<div id="root"></div>
关于javascript - 如何在 Docusaurus 项目中使用带有配置 props 的 useState() 钩子(Hook)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58598000/
createHiveBackground 函数返回我要分配给状态的对象数组。稍后在我的应用程序中,我将使用 setHive 来更改数组的一些值。这些有什么区别? const [hive, setHiv
我很好奇为什么这么多程序员单独导入useState。 import React, { useState } from 'react'; const [foo, setFoo] = useState('
我已经设置了最基本的示例,即TODO列表当我第一次单击Done按钮时,它按预期工作:TODO项被标记为Done:True,并且“Fire”和“Setting”只触发一次。从那时起,我单击的任何按钮都会
我已经设置了最基本的示例,即TODO列表当我第一次单击Done按钮时,它按预期工作:TODO项被标记为Done:True,并且“Fire”和“Setting”只触发一次。从那时起,我单击的任何按钮都会
我正在尝试构建一个可以或不能接收查询字符串的代码。如果它收到所有查询字符串,我想执行一个函数: // state for query const [query, setQuery] = use
下面的代码有什么问题吗?使用 useState 时,我收到 typescript 警告 import * as React, { useState } from 'react' const useFo
我对此的反应是新的。我用每个开关元素创建了一个项目数组,问题是:当我单击一个项目时,所有项目都会同时激活!。我尝试了许多通过搜索找到的解决方案,但都不起作用。
我对此的反应是新的。我用每个开关元素创建了一个项目数组,问题是:当我单击一个项目时,所有项目都会同时激活!。我尝试了许多通过搜索找到的解决方案,但都不起作用。
我希望我没有重复一个问题。我看过这个:TypeError dispatcher.useState is not a function when using React Hooks ,但是我的应用程序运
当对状态、效果、上下文等使用钩子(Hook)时,我这样做: import React, { useState, useEffect, useContext } from 'react'; 但是,我注意
所以我试图在我的 nextjs 应用程序中使用 useState,但是一旦我添加了代码行来初始化 useState,它就会抛出一个带有错误消息的弹出错误:TypeError: Cannot read
我在单击表单提交按钮时使用 React useState 钩子(Hook)更新状态,直到第二次单击时状态才会更新。相信我需要使用 useEffect 但不确定如何使用 onClick 来实现。 con
是否可以从子组件内部更改 useState 的值? 家长: const [state, setState] = useState(false); return setState(true)}/> c
useState 不会立即更新状态。 我正在使用 react-select并且我需要根据请求的结果使用选择的 (multi) 选项加载组件。 出于这个原因,我创建了状态 defaultOptions
这个问题在这里已经有了答案: The useState set method is not reflecting a change immediately (15 个回答) 2年前关闭。 这是所有新
我想在触发正常函数 (handleConsultantChange) 后使用 useState 函数 (setFilterConsultantId) 更改状态 (filterConsultantId)
这是组件的完整代码,我累得想不出怎么解决这个问题 import React, { useEffect, useState } from 'react'; import { Link } from 'r
我正在尝试初始化一个常量变量,它可以用作字符串或字符串数组,具体取决于我的组件正在接收的 Prop 。 我正在尝试将其初始化为 const [selectedOptions, setSelecte
我有两个组件,一个放在另一个里面。子组件打印父组件传递的状态,并使用 useEffect 更新一次状态。在父组件中,我使用 setState(具有 bool 值的对象)并将状态传递给所有子组件。 父组
我们知道useState是FC中的一个hook,返回一个由两个元素组成的数组。第一个是状态变量,第二个是更新状态变量的函数。 const initialStateVariableValue = 0;
我是一名优秀的程序员,十分优秀!