>  기사  >  웹 프론트엔드  >  React 컴포넌트 "외부" 상위 컴포넌트를 사용하는 방법에 대한 자세한 설명

React 컴포넌트 "외부" 상위 컴포넌트를 사용하는 방법에 대한 자세한 설명

亚连
亚连원래의
2018-06-12 11:49:141342검색

이 글에서는 주로 React 컴포넌트 "외부"에서 부모 컴포넌트의 Props를 사용하는 방법을 자세히 소개하고 참고하겠습니다.

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(
    <p className=&#39;styles.app&#39;></p>
  )
}

맞춤형 테마는 초기화 SDK를 통해 전달됩니다. 하위 구성 요소는 props나 context를 통해 얻을 수 있지만 클래스 외부의 스타일에서는 직접 사용할 수 없습니다.

그렇다면 구성 요소 "외부"에서 상위 구성 요소의 Prop을 사용하는 방법은 무엇입니까? "글로벌 환경"에서 사용해야 할 Props를 걸 수 있다면 부담없이 사용할 수는 없을까요?

프로젝트 구조는 다음과 같습니다.

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

먼저 다음 내용으로 서비스에 새 customTheme.js 파일을 만듭니다.

let value = {}

export default () => {

 const setTheme = (initColor) => {
  value = initColor
 }

 const getTheme = () => {
  return value
 }

 return {
  setTheme,
  getTheme,
 }
}

index.js 파일에서 SDK 초기화 시 전달되는 맞춤 테마 개체를 얻을 수 있습니다. . 여기에 이 ​​객체는 customTheme.js의 값에 저장됩니다:

import customTheme from &#39;./services/customTheme&#39;

...

const setTheme = (customTheme() || {}).setTheme
setTheme && setTheme(customTheme)

...

이 방법으로 다른 곳에서 customTheme의 값을 직접 얻을 수 있습니다

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

위 내용은 제가 모두를 위해 편집한 내용입니다. 앞으로는 모두에게 도움이 되세요.

관련 기사:

VUE의 bmob js-sdk 참조(자세한 튜토리얼)

vue에서 v-for를 통해 배열을 처리하는 방법

vue를 사용하여 즐겨찾기를 구현하는 방법

in 노드 .js

js의 npm 및 webpack 구성 방법과 관련하여 js를 통해 현재 시간 형식을 지정하는 방법은 무엇입니까?

위 내용은 React 컴포넌트 "외부" 상위 컴포넌트를 사용하는 방법에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.