国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > JS > 正文

詳解如何在React組件“外”使用父組件的Props

2024-05-06 16:41:59
字體:
來源:轉載
供稿:網友

在寫SDK項目的時候碰到一個問題:在直播間初始化SDK時使用默認主題,在專題頁初始化SDK時使用其它主題。默認主題在打包時掛在全局環境下供多個頁面使用,定制主題需要在初始化SDK的時候傳入。

實現起來很簡單,判斷是否有定制主題,有就使用定制主題,沒有就使用默認主題。項目下的基本組件大多是這樣的:

import { h, Component } from 'lib/preact'import csjs from 'lib/csjs'import { theme } from 'lib/platform'const styles = csjs`  .app {    background: ${theme.color};  }`export default class App extends Component {  render(    <div className='styles.app'></div>  )}

定制主題是通過初始化SDK傳進來的,子組件可以通過props或者context拿到,但是卻不能在class外的styles里面直接使用。

那么如何實現在組件“外”使用父組件的Props呢?如果我們可以把需要使用的Props掛在“全局環境”下,那么不就可以隨便使用了嗎?

項目結構如下:

.|——src| |——lib //公用庫| |——services //抽離出的方法| |——index.js| └──App|   └──app.js└── ...

首先,在services中新建一個customTheme.js文件,內容如下:

let value = {}export default () => { const setTheme = (initColor) => {  value = initColor } const getTheme = () => {  return value } return {  setTheme,  getTheme, }}

在index.js文件中我們可以拿到初始化SDK時傳入的定制主題對象,這里我們把這個對象存儲到customTheme.js里的value中:

import customTheme from './services/customTheme'...const setTheme = (customTheme() || {}).setThemesetTheme && setTheme(customTheme)...

這樣就可以在其它地方直接拿到customTheme的值了

import { h, Component } from 'lib/preact'import csjs from 'lib/csjs'import { theme } from 'lib/platform'import customTheme from '../services/customTheme'const getTheme = (customTheme() || {}).getThemeconst custom_theme = getTheme && getTheme()const styles = csjs`  .app {    background: ${custom_theme.color || theme.color};  }`export default class App extends Component {  render(    <div className='styles.app'></div>  )}

哈哈,就是這么簡單,分享給跟我一樣的菜鳥們,以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 繁峙县| 长乐市| 当阳市| 霍山县| 阆中市| 吉木乃县| 奉贤区| 万山特区| 忻州市| 平江县| 肃宁县| 沂南县| 博客| 乌兰察布市| 泊头市| 扎鲁特旗| 建始县| 仙居县| 凌云县| 荥阳市| 松阳县| 安化县| 兰州市| 青浦区| 武宁县| 阆中市| 堆龙德庆县| 柳州市| 红原县| 清镇市| 北川| 突泉县| 比如县| 丁青县| 柞水县| 东乌珠穆沁旗| 綦江县| 本溪| 唐海县| 长岭县| 义乌市|