react學習-組件傳值

1.props傳值
主要步驟:
在父組件中引用子組件時,在子組件上面寫入name1={name2}格式進行傳值,name1為子組件中對應的用于接收數據的字段名稱,name2為父組件中需要傳遞到子組件中的值(state中聲明的數據);要在子組件中調用父組件的方法修改父組件的值可以用同樣的方法將函數傳入到子組件。相關代碼如下:
父組件:parent.js

import React, { Component } from "react";
import Son from "./son";export class parent extends Component {state = {name: "前端大佬",msg: "哈哈哈",};//   如果要用子組件改父組件的值就觸發該方法parentChange = (data) => {this.setState({ msg: data });};render() {let { name, msg } = this.state;return (<div><h1>parent page</h1><p>姓名:{name}</p><p>信息:{msg}</p><Son name={name} msg={msg} parentChange={this.parentChange} />{/* {...this.state}傳遞state中的所有值 */}{/* <Son {...this.state} parentChange={this.parentChange} /> */}</div>);}
}export default parent;

子組件:son.js

import React, { Component } from "react";
import PropTypes from "prop-types";export class son extends Component {//   state = {//     name: "前端新手",//     msg: "略略略",//   };constructor(props) {super();this.state = {name: "前端新手",msg: "略略略",//   parentMsg: props.msg,};}handleChange = (e) => {// this.setState({ parentMsg: e.target.value });this.props.parentChange(e.target.value);};render() {let { name, msg, parentMsg } = this.state;let { name: pName, msg: pMsg } = this.props;// 父子組件中用到同樣的屬性名稱的時候一般用別名區分return (<div><h1>son page</h1><p>姓名:{name}</p><p>信息:{msg}</p><p>資深前端介紹信息:{pName}--{pMsg}</p><input type="text" defaultValue={pMsg} onChange={this.handleChange} /></div>);}
}// 使用props校驗
son.propTypes = {name: PropTypes.string,msg: PropTypes.string.isRequired,
};
// 未傳遞值時會顯示以下默認值
son.defaultProps = {name: "1",msg: "2",
};export default son;

2.context傳值
主要步驟:
先創建一個context對象,并導出;
在使用的組件中導入該對象;
使用<MainContext.Provider>包裹組件元素;
在組件內部通過聲明static contextType = MainContext或者組件.contextType = MainContext或者使用<MainContext.Consumer>包裹組件元素利用函數調用的方式來使用。相關代碼如下:
context.js

import React from "react";
// 創建一個context對象,組件會從組件樹中離自身最近的那個匹配的Provider中讀取到當前的context值
const MainContext = React.createContext({ name: "哈哈" }); // 默認值export default MainContext;

hello.js

import React, { Component } from "react";
import MainContext from "./context";
import World from "./word";export class hello extends Component {// static contextType = MainContext;render() {return (<div>這是hello組件,是父組件{this.context.name}<World /></div>);}
}// 用Class.contextType掛載在class上,然后使用this.context來消費最近Context上的那個值
// 可以在任何生命周期中訪問到它,包括render函數中。(多用于類組件)
hello.contextType = MainContext;export default hello;

word.js

import React, { Component } from "react";
import MainContext from "./context";export class word extends Component {render() {return (<div><MainContext.Consumer>{(context) => {console.log(context);return <div>這是word組件,是孫組件-{context.name}</div>;}}</MainContext.Consumer></div>);}
}export default word;

main.js

import React, { Component } from "react";
import Hello from "./hello";
import MainContext from "./context";export class main extends Component {render() {let obj = { name: "ernest" };return (<div><MainContext.Provider value={obj}>main組件<Hello /></MainContext.Provider>{/* 不使用MainContext.Provider時context中的默認值才會生效 */}</div>);}
}export default main;

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/24111.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/24111.shtml
英文地址,請注明出處:http://en.pswp.cn/web/24111.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

一篇文章帶你搞懂C++引用(建議收藏)

引用 6.1 引用概念 引用不是新定義一個變量&#xff0c;而是給已存在變量取了一個別名&#xff0c;編譯器不會為引用變量開辟內存空間&#xff0c;它和它引用的變量共用同一塊內存空間。 比如&#xff1a;李逵&#xff0c;在家稱為"鐵牛"&#xff0c;江湖上人稱&quo…

Linux.軟件操作

1.yum 命令 要連網 2.systemctl 命令控制軟件的啟動和關閉 3.ln 創建軟連接 使用cat來找本體&#xff0c;看看鏈接生不生效 4.date 命令查看系統時間 格式化的時候可以用雙引號把他們引出來 -d 對時間進行修改 修改時區 自動校準 手動校準 5.ifconfig 查看本機的ip地址 6.h…

mysql undolog管理

在MySQL中&#xff0c;Undo Log&#xff08;撤銷日志&#xff09;用于支持事務的回滾和MVCC&#xff08;多版本并發控制&#xff09;。為了避免Undo Log不斷增長&#xff0c;影響系統性能&#xff0c;需要進行合理的清理。MySQL的Undo Log清理策略主要依賴于系統的配置參數和后…

Ansible——get_url模塊

目錄 主要用途 參數總結 基本語法示例 使用示例 示例1&#xff1a;下載文件 示例2&#xff1a;使用校驗和驗證文件 示例3&#xff1a;使用 HTTP 基本認證 示例4&#xff1a;通過代理服務器下載文件 示例5&#xff1a;設置文件權限、所有者和組 示例6&#xff1a;強制…

5.31.15 使用圖像到圖像轉換和 YOLO 技術對先前的乳房 X 光檢查結果中的異常進行早期檢測和分類

在本研究中&#xff0c;我們研究了基于 You-Only-Look-Once (YOLO) 架構的端到端融合模型的有效性&#xff0c;該模型可同時檢測和分類數字乳房 X 光檢查中的可疑乳腺病變。包括四類病例&#xff1a;腫塊、鈣化、結構扭曲和正常&#xff0c;這些病例來自包含 413 個病例的私人數…

ic基礎|復位篇02:芯片中的“人生重來槍”!crg之復位系統

大家好&#xff0c;我是數字小熊餅干&#xff0c;一個練習時長兩年半的ic打工人。我在兩年前通過自學跨行社招加入了IC行業。現在我打算將這兩年的工作經驗和當初面試時最常問的一些問題進行總結&#xff0c;并通過匯總成文章的形式進行輸出&#xff0c;相信無論你是在職的還是…

范閑獲取到慶帝與神廟的往來信件,用AES進行破解

關注微信公眾號 數據分析螺絲釘 免費領取價值萬元的python/java/商業分析/數據結構與算法學習資料 在《慶余年2》中&#xff0c;范閑與慶帝和神廟之間的權謀斗爭愈演愈烈。一次偶然的機會&#xff0c;范閑從慶帝的密室中獲取到幾封與神廟往來的密信。然而&#xff0c;這封信件…

eclipse連接后端mysql數據庫并且查詢

教學視頻&#xff1a;https://www.bilibili.com/video/BV1mK4y157kE/?spm_id_from333.337.search-card.all.click&vd_source26e80390f500a7ceea611e29c7bcea38本人eclipse和up主不同的地方如下&#xff0c;右鍵項目名稱->build path->configure build path->Libr…

【懸架筆記三】1/4被動懸架垂向動力學仿真+頻域特性分析

1/4被動懸架 代碼&#xff1a; %書第156頁、159頁 clc clear close all %% 一.懸架參數 ms320; mw50; Ks22000; Cs1500; Kw195000; f00.07; %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% 二.垂向振動動力學仿真 %% 二.1.狀態方程 A [0 1 0 -1;.…

機器人--矩陣運算

兩個矩陣相乘的含義 P點在坐標系B中的坐標系PB&#xff0c;需要乘以B到A到變換矩陣TAB。 M點在B坐標系中的位姿MB&#xff0c;怎么計算M在A中的坐標系&#xff1f; 一個矩陣*另一個矩陣的逆矩陣

JavaSE 實戰五子棋中國象棋(單機簡易版)

介紹 JavaSE實踐五子棋和中國象棋游戲&#xff0c;棋盤&#xff0c;棋子繪制&#xff0c;輸贏判定重置棋盤&#xff0c;單機博弈。 五子棋棋盤 中國象棋棋盤 使用說明 啟動類 Main.java&#xff0c; 面板類 Panel.java繪制棋盤和玩法&#xff0c;實體類 ChessPiecesNode.jav…

適配器模式 Adapter

一種結構型設計模式&#xff0c;它允許將不兼容的對象轉換成可兼容的接口。主要目的是解決在不改變現有代碼的情況下&#xff0c;使不兼容的接口之間能夠正常工作&#xff0c;通過創建一個中間轉換的適配器來將一個對象轉換成我們所需要的接口。 場景&#xff1a; 當你原來的某…

【Text2SQL 論文】MAC-SQL:多個 Agents 合作來解決 Text2SQL

論文&#xff1a;MAC-SQL: A Multi-Agent Collaborative Framework for Text-to-SQL ???? arXiv:2312.11242, 北航 & Tencent Code: MAC-SQL | GitHub 文章目錄 一、論文速讀二、MAC-SQL2.1 Selector agent2.2 Decomposer agent2.3 Refiner agent 三、指令微調的 SQL-L…

2024.06.07【讀書筆記】丨生物信息學與功能基因組學(第十一章 分子水平的系統發生和進化 第四部分)【AI測試版】

讀書筆記四&#xff1a;《生物信息學與功能基因組學》第十一章第四部分 分子系統發生的專用名詞與樹的拓撲結構 在《生物信息學與功能基因組學》第十一章的第四部分&#xff0c;作者介紹了分子系統發生分析中的專用名詞&#xff0c;并詳細解釋了系統發生樹的拓撲結構和分支長…

【Python Cookbook】S02E04 文本模式的匹配和查找 match()、search()、findall() 以及 捕獲組和 + 的含義

目錄 問題解決方案討論 問題 本文討論一些按照特定的文本模式進行的查找和匹配。 解決方案 如果想要匹配的只是簡單文字&#xff0c;通常我們使用一些內置的基本字符串方法即可&#xff0c;如&#xff1a;str.find()&#xff0c;str.startwith()&#xff0c;str.endswith() …

Day49 動態規劃part08

LC139單詞拆分(未掌握) 未掌握分析&#xff1a;將字符串s中的各個字符看成是背包&#xff0c;思考成了多重背包問題單詞就是物品&#xff0c;字符串s就是背包&#xff0c;單詞能否組成字符串s&#xff0c;就是問物品能不能把背包裝滿。拆分時可以重復使用字典中的單詞&#xf…

轉速傳感器介紹

一、概述 RPM&#xff08;Revolutions Per Minute&#xff09;轉速傳感器是一種用于測量旋轉機械設備轉速的傳感器。它可以檢測旋轉部件上的特定位置標記&#xff08;如齒輪、凸起或磁鐵&#xff09;&#xff0c;并根據這些標記的通過頻率來計算轉速。發電額定頻率是50hz和60z…

ubuntu18.04環境下,arduino ide在打開串口監視器時報錯

ubuntu18.04環境下&#xff0c;arduino ide在打開串口監視器時報錯 Exception in thread “AWT-EventQueue-0” java.lang.UnsatisfiedLinkError: /home/lzx/.jssc/linux/libjSSC-2.8_x86_64.so: /home/lzx/.jssc/linux/libjSSC-2.8_x86_64.so: file too short 這個錯誤表明 li…

力扣1574.刪除最短的子數組使剩余數組有序

力扣1574.刪除最短的子數組使剩余數組有序 剩下有序 –> 前面一段 后面一段 有序 前面有序 后面有序 前面最后一項 < 后面第一項先反向遍歷找到right的最小值然后正向遍歷找left的最大值當nums[left] > nums[right]時 right class Solution {public:int findLen…

java線程變量共享

在Java中&#xff0c;線程變量共享可以通過幾種方式實現&#xff1a; 1.實例變量&#xff1a;如果一個實例變量被多個線程共享&#xff0c;你需要確保適當的同步&#xff0c;以避免競態條件。你可以使用synchronized關鍵字或者Lock接口來保護共享變量。 2.靜態變量&#xff1a;…