diff --git a/docs/react.md b/docs/react.md index e3df4ef42e7..8bd63f5438f 100644 --- a/docs/react.md +++ b/docs/react.md @@ -542,6 +542,150 @@ function CustomButton() { } ``` +Props +--- + +### Props 的 Spread 运算符 + +扩展运算符可用于一次传递所有 Props。 + +```jsx +function Profile(props) { + return

{props.name}, {props.age}

; +} + +const user = { name: "John", age: 25 }; + +``` + +### 什么是 Props? + +- Props(“properties”的缩写)用于将数据从父组件传递到子组件。 +- 它们是只读的,不能在子组件内修改。 + +```jsx + +``` + +### 将 Pros 传递给组件 + +您可以通过 JSX 中的属性将 props 从父组件传递到子组件。 + +```jsx +function ParentComponent() { + return ; +} + +function ChildComponent (props) { + return
Hello,{props.name}. You are {props.age} years old.
; +} +``` + +### 解构 props + +props 可以解构以便于访问。 + +```jsx +function Greeting({ name }) { + return

Hello, {name}!

; +} +``` + +### 访问功能组件中的 Props + +可以使用 props 对象在功能组件中访问 Props。 + +```jsx +function Greeting(props) { + return

Hello, {props.name}!

; +} +``` + +### 使用 Pros 进行条件渲染 + +道具可用于组件内部的条件渲染。 + +```jsx +function Greeting({ name, isLoggedIn }) { + return isLoggedIn ? Welcome back, {name}:

Please log in

; +} +``` + +### Prop Drilling(属性传递) + + +```js +function Parent() { + const name = "John"; + return ; +} + +function Child({ name }) { + return +} + +function Grandchild({ name }) { + return

{name}

; +} +``` + +将属性(props)在多个组件层级中逐层传递可能会变得繁琐。这种方式称为属性传递(prop drilling)。 + +### Props 与 State + + +- `props` 被传递给组件并且是不可变的。 +- `State` 是组件的本地状态,可以更改。 + +```jsx +function ChildComponent({ name }) { + return

Hi,my name is {name}.

; +} + +function ParentComponent() { + // State to manage the name value + const [name, setName]= usestate('John'); + const changeName = () => { + setName('Jane'); + }; + return ( +
+ + +
+ ); +} +``` + +### 默认 props + +```jsx +function Greeting({ name = "Bob" } = 0}) { + return

Hello, {name}!

; +} +// Renders "Hello, Bob!" +< Greeting /> +``` + +您可以为 `props` 设置默认值。 + +### 使用 prop 处理事件 + +你可以将事件处理程序作为 props 传递给 handle 用户交互。 + +```jsx +function Button({ onClick }) { + return < button onClick={onClick}>Click me; +} + +function App() { + const handleClick = () => alert("Button clicked!"): + return