React中定义和使用函数式组件

发布于:2024-12-19 ⋅ 阅读:(15) ⋅ 点赞:(0)

在 React 中,函数式组件是一种通过普通 JavaScript 函数定义的组件。它们接收 props 作为参数,并返回 React 元素。从 React 16.8 开始,函数式组件还可以利用 Hooks 来增加状态和其他 React 特性。

1. 简单的函数式组件

import React from 'react';
const HelloWorld = (props) => {
return (
<div>
<h1>Hello, {props.name}!</h1>
</div>
);
};
export default HelloWorld;

在这个例子中,HelloWorld 是一个函数式组件,它接收一个 props 对象,并返回一个包含 h1 元素的 div

2. 使用解构赋值来简化 props

为了更简洁地访问 props,你可以使用解构赋值:

import React from 'react';
const HelloWorld = ({ name }) => {
return (
<div>
<h1>Hello, {name}!</h1>
</div>
);
};
export default HelloWorld;

在这个例子中,我们通过解构赋值直接获取 props.name,使得代码更加简洁。

3. 使用 Hooks 增加状态

函数式组件可以使用 React Hooks 来增加状态和其他特性。例如,使用 useState Hook:

import React, { useState } from 'react';
const Counter = () => {
const [count, setCount] = useState(0);
return (
<div>
<p>Count: {count}</p>
<button onClick={() => setCount(count + 1)}>Increment</button>
</div>
);
};
export default Counter;

在这个例子中,Counter 组件使用 useState Hook 来维护一个 count 状态,并包含一个按钮来增加 count 的值。

4. 使用 Effects Hook

useEffect Hook 可以让你在组件渲染到 DOM 后执行副作用操作,例如数据获取或订阅:

import React, { useEffect, useState } from 'react';
const DataFetcher = () => {
const [data, setData] = useState(null);
useEffect(() => {
// 模拟数据获取
const fetchData = async () => {
const result = await new Promise(resolve =>
setTimeout(() => resolve("Fetched Data"), 2000)
);
setData(result);
};
fetchData();
// 清理函数(可选)
return () => {
console.log('Cleanup');
};
}, []); // 空数组作为第二个参数表示这个 effect 只在组件挂载和卸载时运行一次
return (
<div>
{data ? <p>{data}</p> : <p>Loading...</p>}
</div>
);
};
export default DataFetcher;

在这个例子中,DataFetcher 组件使用 useEffect 来模拟一个异步数据获取操作,并在数据获取完成后更新状态。

5. 组合组件

你可以将多个函数式组件组合在一起,形成一个更复杂的 UI:

import React from 'react';
import HelloWorld from './HelloWorld';
import Counter from './Counter';
import DataFetcher from './DataFetcher';
const App = () => {
return (
<div>
<HelloWorld name="React" />
<Counter />
<DataFetcher />
</div>
);
};
export default App;

在这个例子中,App 组件包含了 HelloWorldCounter 和 DataFetcher 组件。