網(wǎng)站首頁 編程語言 正文
1.繼續(xù)深入state
state有兩種用法:
setState({}) 和 setState(()=>{})
第一種用法本質(zhì)是:我寫了這個屬性,然后進(jìn)行覆蓋操作。
第二種用法好處是:回調(diào)函數(shù)中的第一個參數(shù)是state。這樣的話看起來獲取到原先state上的數(shù)據(jù)也更加簡單!
setState修改數(shù)據(jù)實現(xiàn)響應(yīng)式的本質(zhì)
在每次修改之后,會重新調(diào)用render函數(shù)。
2.props
什么是props?
? props 是組件傳遞的參數(shù)。子組件通過this.props來接受!
在類組件中:
props通過子組件的this.props來接受父組件傳過來的props值。
組件是可以復(fù)用的,最常見的就是循環(huán)來使用。與Vue不同的是:React他沒有指令這一說法。jsx語法會自動循環(huán)數(shù)組。通常處理數(shù)組都采用高階函數(shù)。例如
沒有循環(huán)的用法:
<div class="box1"></div>
<script src="../../js/react.development.js"></script>
<script src="../../js/react-dom.development.js"></script>
<script src="../../js/babel.min.js"></script>
<script type="text/babel">
// 子組件
class Info extends React.Component {
render() {
const { name, age, sex } = this.props
return <div>
<h2>子組件Child</h2>
<div>姓名: {name}</div>
<div>年齡: {age}</div>
<div>性別: {sex}</div>
</div>
}
}
// 父組件
class Demo extends React.Component {
state = {
arr: [
{
name: '北幕',
age: 18,
sex: "man"
},
{
name: '北幕',
age: 18,
sex: "man"
},
{
name: '北幕',
age: 18,
sex: "man"
}
]
}
render() {
return (
<div>
<h1>我是Demo組件</h1>
<hr />
<Info name="耀陽" age="18" sex="男"></Info>
<Info name="呂德華" age="18" sex="男"></Info>
<Info name="北幕" age="18" sex="男"></Info>
</div>
)
}
}
ReactDOM.render(<Demo></Demo>, document.querySelector('.box1'))
</script>
有循環(huán)的用法
<div class="box1"></div>
<script src="../../js/react.development.js"></script>
<script src="../../js/react-dom.development.js"></script>
<script src="../../js/babel.min.js"></script>
<script type="text/babel">
// 子組件
class Info extends React.Component {
render() {
const { name, age, sex } = this.props
return <div>
<h2>子組件Child</h2>
<div>姓名: {name}</div>
<div>年齡: {age}</div>
<div>性別: {sex}</div>
</div>
}
}
// 父組件
class Demo extends React.Component {
state = {
arr: [
{
name: '北幕',
age: 18,
sex: "man"
},
{
name: '北幕',
age: 18,
sex: "man"
},
{
name: '北幕',
age: 18,
sex: "man"
}
]
}
render() {
return (
<div>
<h1>我是Demo組件</h1>
<hr />
{
this.state.arr.map(item => <Info name={item.name} age={item.age} sex={item.sex} ></Info>)
}
</div>
)
}
}
ReactDOM.render(<Demo></Demo>, document.querySelector('.box1'))
</script>
Props幾個特點:
子組件不能修改傳遞的Props數(shù)據(jù),只能由父組件來修改,或者從數(shù)據(jù)的源頭來修改。
父組件傳遞參數(shù),可以是其他的類型,利用jsx語法:{},跟vue的插值語法類似:都是js表達(dá)式!
父組件傳遞多個數(shù)據(jù){…obj}
對象解構(gòu)還是對象!!!
<div class="box1"></div>
<script src="../../js/react.development.js"></script>
<script src="../../js/react-dom.development.js"></script>
<script src="../../js/babel.min.js"></script>
<script type="text/babel">
// 子組件
class Info extends React.Component {
render() {
const { name, age, sex } = this.props
return <div>
<h2>子組件Child</h2>
<div>姓名: {name}</div>
<div>年齡: {age}</div>
<div>性別: {sex}</div>
</div>
}
}
// 父組件
class Demo extends React.Component {
state = {
obj: {
name: "耀陽1", age: "18", sex: "男"
}
}
render() {
return (
<div>
<h1>我是Demo組件</h1>
<hr />
<Info {...this.state.obj}></Info>
<Info name="呂德華" age="18" sex="男"></Info>
<Info name="北幕" age="18" sex="男"></Info>
</div>
)
}
}
ReactDOM.render(<Demo></Demo>, document.querySelector('.box1'))
</script>
3.限制Props的傳遞類型
子組件接收父組件的類型,父組件可以隨意的定義,
? a. 子組件限制父組件傳遞的數(shù)據(jù)類型
? b. 引入prop-types庫
? c. 需要在類上設(shè)置一個屬性 propTypes,誰想限制給誰設(shè)置。寫在類上面方法(靜態(tài)方法)
? d. 設(shè)置默認(rèn)值 defaultProps = {}
這個不需要記住,用的時候查閱即可!
限制類型的簡寫:可以使用static靜態(tài)方法。
4.函數(shù)接收props參數(shù)
函數(shù)中的state在hook中才能使用。暫時先不考慮。
函數(shù)的第一個參數(shù)就是props,在函數(shù)中只需要用第一個參數(shù)來接受即可
5.插槽
props下面的Childrene
原文鏈接:https://blog.csdn.net/qq_62860882/article/details/128341668
相關(guān)推薦
- 2022-03-29 C++中的拷貝構(gòu)造詳解_C 語言
- 2022-08-03 python中的三種注釋方法_python
- 2022-08-15 常見哈希算法、Hmac算法和BouncyCastle
- 2022-08-03 python工具之清理?Markdown?中沒有引用的圖片_python
- 2022-04-24 .NET?CORE?鑒權(quán)的實現(xiàn)示例_實用技巧
- 2022-05-08 時間序列預(yù)測中的數(shù)據(jù)滑窗操作實例(python實現(xiàn))_python
- 2022-04-28 深入淺出理解C語言指針的綜合應(yīng)用_C 語言
- 2022-09-15 C#獲取文件名和文件路徑的兩種實現(xiàn)方式_C#教程
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支