javascript - 在不是 React.component 扩展类的 React Component 中调用 componentDidMount()
问题描述
我有一个反应组件,我稍后会在我的 index.js 中渲染它
index.js
import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';
ReactDOM.render(
<React.StrictMode>
<App />
</React.StrictMode>,
document.getElementById('root')
);
应用程序.jsx
import SomeComponent from "./Components/SomeComponent ";
function App() {
return <SomeComponent />
}
export default App;
SomeComponent.jsx(仅用于示例的组件的随机名称)
function SomeComponent() {
//some code
return ...
}
export default SomeComponent;
问题是我看到很多人在使用
class SomeComponent extends React.Component {
componentDidMount()
//some code
render() {
return ...
}
}
而且我想使用我在很多代码示例中看到的“componentDidMount()”,但以我的做事方式,这似乎是不可能的。
但是……这可能吗?还是我可以使用另一种类似的方法?
谢谢。
解决方案
在功能组件中,React 16.8,
我们有React Hooks。我们可以使用useEffect()
Hook 来模拟componentDidMount()
在基于类的组件中所做的事情。但是,您需要将第二个参数作为状态值传递给useEffect()
,然后它的行为就像componentDidMount()
状态值被修改时一样。
像这样的东西:
const [stateValue,useStateValue] = useState("enjoy");
useEffect(()=>{
// ... Your code
},[stateValue]);
推荐阅读
- rest - 将 REST API 限制为仅限移动应用程序 - 建议的方法
- python - 在 Mac OS 上默认使用 Python 3?
- jenkins - Jenkins Multibranch Config:如何根据变量字符串过滤分支?
- c - 程序创建一个文件,但不会写入它
- c - 简单的链表程序不起作用
- javascript - 当文件托管在 http 服务器上时,IE 11 表单发布到新窗口不起作用
- python-3.x - 向表中添加可变数量的列
- javascript - 如何根据单选类型输入设置标签文本?
- java - 阻塞队列上实现的消费者何时停止监听消息
- javascript - Three.js:将纹理数组传递给shaderMaterial