在此专案练习使用function的方式建立元件,因此在子元件使用Hook中的useContext,来从父元件中宣告好的共用states - context中获取资料吧!
在上一篇文章中,已在父元件App中宣告好名为 ContextState
的共用资料了
前往复习全部程序码
父元件App.js(省略部分程序码)
//引入context
import { ContextState } from './context/ContextState.js'
//设定要传入context的资料
const setValue = {
titleContext: "我在App元件将这段文字设成共用", colorContext: 'blue'
}
//jsx模板中宣告并用value传入资料,让下层子元件Child都能使用context
<ContextState.Provide value={setValue}>
<Child />
</ContextState.Provide>
Child.js
import React from 'react';
import './Child.css'
import Grandson from './Grandson'
function Child() {
return (
<div className="App child-wrap" >
<h4>Child元件用不到context</h4>
<Grandson />
</div>)
}
export default Child;
Grandson.js
//引入useContext
//引入我的共用资料设定档js档-contextState
import React, { useContext } from 'react';
import { ContextState } from '../context/ContextState'
function Grandson() {
//用useContext(ContextState)函式回传在App.js元件中传入的value
//{titleContext: "我在App元件将这段设成共用", colorContext: 'blue'}
//给getContext
const getContext = useContext(ContextState)
//使用getContext回传的物件格式资料获得里面的值吧
const styleColor = { color: getContext.colorContext }
return (
<div className="App grandson-wrap" >
Grandson元件使用Context
<br />
<div style={styleColor}>{getContext.titleContext}</div>
</div >)
}
export default Grandson;
最底层的 Grandson 元件不用麻烦 Child 元件用props传送资料,
就可以使用 App元件中的 setValue 物件资料了!
最後要注意,Context的资料要用在不会经常变动的资讯。
因为当Context资料变动後会造成 最上层根元件 跟 所有使用到Context的元件 被重新渲染,
这会带给整个专案模组带来十分大的渲染成本,影响效能。
<<: [Day24] 谈谈写测试的好处:从为你自己写测试开始
Hashicorp Vault: Upgrade 升级方式: Vault是binary的档案,所以更...
订阅patreon即可看到更多文章 https://www.patreon.com/wade3c ...
Store location data is information about the geogr...
-聚合功能 分区(Partitioning) 对数据或数据库进行分区是指将数据集分成多个部分并分别...
今天开始到结束,要进入到实际 Dapp 的应用了,但在应用之前要先会安装 metamask。 因为要...