如何在 React 中使用 onClick 將 state/props 傳送到另一個元件?
在本文中,我們將學習如何在 React 中將 state/props 從一個元件傳送到另一個元件。️
在繼續之前,讓我們看看 React 中的 state 和 props 是什麼。我們使用 props 和 state 來顯示動態內容,這些內容會隨著時間的推移而發生變化。
- Props: Props 是 Properties 的縮寫。它們是隻讀的,這意味著它們不能被修改,我們從父元件傳遞 props 到子元件。這意味著接收了父元件 props 的子元件無法被修改。
- State: State 用於儲存特定元件的資料,它是可變的。換句話說,我們可以在該元件內更改它。如果我們更改任何 state 值,那麼它將立即觸發該特定元件的重新渲染,該元件在其內被管理。

語法
將任何值作為 prop 從父元件傳遞到子元件的語法。
const AnyParentComponent = () => {
const value = "Hey there kalyan!";
return (
<div>
<ChildComponent propName={propValue} />
</div>
);
};
將 state/props 傳送到另一個元件的示例
假設我們有兩個元件 ComponentA 和 ComponentB,我們想將 state 作為 prop 從 ComponentA 傳遞到 ComponentB,prop 的值為一個虛擬文字,以下程式演示瞭如何實現這一點。
示例 1
將 state 作為 prop 傳遞到其他元件。
ComponentA.jsx
import React, { useState } from "react";
import ComponentB from "./ComponentB";
const ComponentA = () => {
const loremIpsum =
"Lorem Ipsum is simply dummy text of the
printing and typesetting industry. Lorem
Ipsum has been the industry's standard
dummy text ever since the 1500s, when an
unknown printer took a galley of type and
scrambled it to make a type specimen book.
It has survived not only five centuries,
but also the leap into electronic typesetting,
remaining essentially unchanged.";
const [content, setContent] = useState("");
const sendContent = (e) => {
e.target.innerText = "Sent";
setContent(loremIpsum);
};
return (
<div>
<button onClick={sendContent}>
Send Content to Component B
</button>
<ComponentB content={content} />
</div>
);
};
export default ComponentA;
ComponentB.jsx
import React, { useState } from "react";
const ComponentB = ({ content }) => {
const [isOpen, setIsOpen] = useState(false);
const toggleAccordion = () => {
setIsOpen(!isOpen);
};
return (
<div
style={{
border: "1px solid #ccc",
borderRadius: "4px",
width: "80%",
margin: "20px auto",
}}
>
<div
onClick={toggleAccordion}
style={{
padding: "10px",
backgroundColor: "#000",
cursor: "pointer",
fontWeight: "bold",
}}
>
{isOpen ? "Click to Hide Content" : "Click to Show Content"}
</div>
<div
style={{
maxHeight: isOpen ? "100px" : "0",
overflow: "hidden",
overflowY: "auto",
transition: "max-height 0.1s ease",
}}
>
{isOpen ? (
<p style={{ padding: "10px" }}>{content}</p>
) : (
"No content to display."
)}
</div>
</div>
);
};
export default ComponentB;
輸出

解釋
ComponentA- 我們使用 'content' state 來管理 loreamIpsum 文字。
- 當點選按鈕時,它會呼叫 sendContent 函式,該函式使用其 setContent 函式更新 `content` state。
- 然後,此更新後的內容作為 prop 傳遞給 `ComponentB`。
- 在點選按鈕之前,傳遞的 prop 為空內容,因為 content state 的初始值為 '' 空字串。
- 我們使用 'content' state 來管理 loreamIpsum 文字。
- 當點選按鈕時,它會呼叫 sendContent 函式,該函式使用其 setContent 函式更新 `content` state。
- 然後,此更新後的內容作為 prop 傳遞給 `ComponentB`。
- 在點選按鈕之前,它將 prop 作為空內容傳遞,因為 content state 的初始值為 '' 空字串。
示例 2
將 state 作為 prop 傳遞到其他元件。
ComponentA.jsximport React, { useState } from "react";
import ComponentB from "./ComponentB";
const ComponentA = () => {
const [message, setMessage] = useState("No Message");
const updateMessage = () => {
setMessage("Hey there Kalyan 👩🏻💻😊");
};
return (
<div>
<button onClick={updateMessage}>Send Message</button>
<ComponentB message={message} />
</div>
);
};
export default ComponentA;
ComponentB.jsx
import React from "react";
const ComponentB = ({ message }) => {
return (
<div>
<h2>Message from prop: {message}</h2>
</div>
);
};
export default ComponentB;
輸出

解釋
在 ComponentA 中,我們的 state 為 `message`,點選“傳送訊息”按鈕將呼叫 `updateMessage` 函式,並將 message state 更新為某些文字。此 state 作為 prop 從 ComponentA 傳遞到 CompoentB。在 ComponentB 中,我們只是接收 message 作為 prop 並列印它。
結論
因此,我們瞭解瞭如何在 React 中在不同元件之間傳遞 state 和 props。Props 是隻讀的,我們將其從上級元件傳遞到下級子元件,它是不可變的,而 state 是可變的,並在同一組件內使用。
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP