javascript - 如何根据 JavaScript 中的系统范围主题将 props 发送到变量?

标签 javascript css reactjs jsx

如何根据系统范围主题向组件发送 Prop ?

我知道如何使用媒体查询为我的组件设置样式,以使用@media Preferred颜色方案,但我正在使用react-json-vew库和组件,它需要一个主题 Prop ,这是我需要的当系统范围的暗模式切换时进行更改。

它是一个自定义组件,所以我不想自己设计它的样式,这也会增加代码的长度。

片段:

import ReactJson from "react-json-view";
import React from "react";

class JsonDialog extends React.Component {
constructor(props) {
    super(props);

    this.state = {
      checked: false,
      copied: false
    };
  }
render(){
        return    <ReactJson src={json} theme={"apathy:inverted"} /> // here I need to apply theme on the basis of dark or light mode

  } 
}

最佳答案

为什么不使用 React Context API?

import React from 'react';

const ThemeContext = React.createContext();

export default class App extends React.Component { 
  render() {
    return (
      <ThemeContext.Provider value={'apathy:inverted'}>            
            <JsonDialog/>       
            {/* Other Components */}
      </ThemeContext.Provider>
    )
  }
}

class JsonDialog extends React.Component {
    constructor(props) {
        super(props);
        this.state = {
            checked: false,
            copied: false
        };
    }
    render() {        
        return( 
            <ThemeContext.Consumer>
                {theme=> <ReactJson src={json} theme={theme} />}
            </ThemeContext.Consumer>
        )
    }
}

关于javascript - 如何根据 JavaScript 中的系统范围主题将 props 发送到变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60633617/

相关文章:

javascript - 添加 javascript 后标题元素不会显示,但删除它后会显示

javascript - 用于检测元素位置何时更改的 jQuery 事件

html - 如何动态改变顶部菜单的背景颜色?

javascript - react native : How to individually control each onpress() from map() generated components

javascript - Google Chart - 内部有文本和间隔的点

javascript - 需要帮助正确扩展 jQuery Slick Slider 插件来改变它的滑动方式

Java Jsoup按钮选择

html - 如果父元素不是全屏宽度,如何使子菜单跨越全屏?

reactjs - Set-Cookie 来自服务器的响应,但不存储在存储 cookie 中

javascript - 如何从 Chrome REPL 调试 React 变量