小编Tay*_*ach的帖子

如何在 createMuiTheme 中使用断点?材质 UI 和 React.js

也许不是正确的方法,但我想为标题创建一些“全局”样式。像这样的东西:

const myTheme = createMuiTheme({
    headings: {
        h1: {
            fontSize: 28,
            // Obviously this does not work...
            [theme.breakpoints.down('sm')]: {
                fontSize: 24
            },
        },
        h2: {
            fontSize: 24,
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

然后我可以像这样在我的组件中使用它们:

const styles = (theme) => ({
    myElement: {
        ...theme.headings.h1,
        // ... other styles
    }
}
Run Code Online (Sandbox Code Playgroud)

这确实有效,但我面临的问题是我希望标题具有响应性并尊重 Material UI 的断点,但我不能在 createMuiTheme 本身中使用它们?有什么方法可以正确执行此操作,以便我可以将所有样式都包含在响应式样式中?

reactjs material-ui

11
推荐指数
3
解决办法
4085
查看次数

没有这样的模块'UIKit'

我想要做的就是制作最基本的Mac OS X应用程序,它只显示一个WKWebView ...

import UIKit
import WebKit
class ViewController: UIViewController, WKUIDelegate {

var webView: WKWebView!

override func loadView() {
    let webConfiguration = WKWebViewConfiguration()
    webView = WKWebView(frame: .zero, configuration: webConfiguration)
    webView.uiDelegate = self
    view = webView
}
override func viewDidLoad() {
    super.viewDidLoad()

    let myURL = URL(string: "https://www.apple.com")
    let myRequest = URLRequest(url: myURL!)
    webView.load(myRequest)
}}
Run Code Online (Sandbox Code Playgroud)

https://developer.apple.com/documentation/webkit/wkwebview

macos xcode wkwebview

5
推荐指数
1
解决办法
7799
查看次数

IntersectionObserver iOS和Safari

我的目标是如果用户进一步滚动到视频元素,则将位置更改为视频元素。我使用的是Intersection Observer API,因为我需要处理AdForm Banner / iFrame中的页面滚动。

这是我的代码:

function createObserver() {
  var observer;
  var options = {
    root: null,
    rootMargin: "0px",
    threshold: buildThresholdList()
  }; 
  observer = new IntersectionObserver(handleIntersect, options); 
  observer.observe(boxElement);
}
Run Code Online (Sandbox Code Playgroud)

这是handleIntersect函数:

function handleIntersect(entries, observer) { 
  entries.forEach(function(entry) {
    if (entry.intersectionRatio > prevRatio) {
      console.log("VIDEO IN");
      p.style.position = "relative";
    } else if(entry.intersectionRatio === 0 && scrolled === 1 ) {
      console.log("VIDEO OUT");
      p.style.position = "fixed"; 
    }
  });
}
Run Code Online (Sandbox Code Playgroud)

这是我的代码笔:https ://codepen.io/alex18min/pen/gXXYJb

它可以在Chrome / Firefox / Edge和Android设备上完美运行,但通常不能在iOS和Safari上运行,似乎未检测到监听器。

有人能帮我吗?先感谢您。

html javascript scroll banner intersection-observer

5
推荐指数
1
解决办法
7242
查看次数

用作背景图像时如何缩放 CSS 精灵?

.my-sprite {
  background-image: url("https://i.stack.imgur.com/lJpW8.png");
  height: 100px;
  width: 100px;
  background-position: 0 0;
  background-position: -200px 0px;
}
Run Code Online (Sandbox Code Playgroud)
<div class="my-sprite"></div>
Run Code Online (Sandbox Code Playgroud)

我无法让我的精灵缩放到更小的尺寸。我希望它是实际大小的一半,即 100x100px,如何使用background-size属性缩放它?现在它只显示 100x100px 的完整图像尺寸...

css background-image sprite-sheet

5
推荐指数
2
解决办法
6207
查看次数

未下载Chromium版本。在Electron build中的Launcher.launch中运行“ npm install”或“ yarn install”

我的项目是一个桌面Electron应用程序,单击该应用程序会刮擦一个网站。简单。

我的项目在本地运行正常(当然),但是当我去运行npm run package-win并创建Windows生产应用程序时,我相信当操纵up尝试启动浏览器时会出现错误。

我只在为Windows构建时才得到这个。在我的Mac上构建它可以正常工作并且没有错误...

Chromium revision is not downloaded. Run "npm install" or "yarn install"  at Launcher.launch
Run Code Online (Sandbox Code Playgroud)

我尝试删除package.lock,node_modules文件夹,并且当然npm install按照建议的方式运行。我认为这与版本控制有关吗?这是我的package.json文件:

{
  "name": "my-project",
  "version": "1.0.0",
  "description": "My project description.",
  "main": "main.js",
  "scripts": {
    "start": "electron .",
    "package-win": "electron-packager . my-project --overwrite --asar=true --platform=win32 --arch=ia32 --icon=assets/icons/win/icon.ico --prune=true --out=release-builds --version-string.CompanyName=CE --version-string.FileDescription=CE --version-string.ProductName=\"My Project\""
  },
  "license": "CC0-1.0",
  "devDependencies": {
    "electron": "^2.0.12",
    "electron-packager": "^12.2.0"
  },
  "dependencies": {
    "electron-json-storage": "^4.1.4",
    "nodemailer": "^4.6.7",
    "puppeteer": "^1.8.0"
  }
}
Run Code Online (Sandbox Code Playgroud)

我可以说我的try catch失败了,因为错误消息来自catch,所以此块中的某些内容失败了,但仅限于生产版本中:

  async …
Run Code Online (Sandbox Code Playgroud)

node.js electron puppeteer

5
推荐指数
1
解决办法
871
查看次数

我的 React 组件在 Safari 浏览器中未更新

以为一切都很顺利。在 Chrome、FF、Edge,甚至 IE 11 中完美运行!

父组件保存所有的状态。我将bets 对象传递给子组件,该子组件计算一个计数并传递给孙组件进行显示。

父状态“bets”是一个对象,其中键作为 ID,值作为对象。

当我与应用程序交互时,父状态会正确更改。为什么当父状态改变时只有 Safari 不会更新?(在 iOS 和 MacOS 上)

家长

class ParentComponent extends React.Component {
    constructor(props) {
        super(props);
        this.state = {
            bets: {}
        };
    }
}
Run Code Online (Sandbox Code Playgroud)

孩子

getBadgeCount = (league) => {
    const bets = this.props.bets;
    let count = 0;
    Object.keys(bets).map((bet) => bets[bet].event.league === league && count++);
    return count;
};

// ...

<ChildItem count={this.getBadgeCount(league)} />
Run Code Online (Sandbox Code Playgroud)

孙子

class GrandChildComponent extends React.Component {
    render() {
        const { count } = this.props;
        return (
            <div>
                <div> …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs

5
推荐指数
2
解决办法
8471
查看次数

如何使用React(next.js)SSR两遍渲染来防止父组件重新渲染?

所以我有一个使用 Next.js 的 SSR 应用程序。我使用的是利用 WEB API 的第 3 方组件,因此需要将其加载到客户端而不是服务器上。我正在使用“两遍”渲染来完成此操作,我在这里阅读了相关内容: https: //itnext.io/tips-for-server-side-rendering-with-react-e42b1b7acd57

我试图弄清楚为什么当 next.js 页面中的“ssrDone”状态发生变化时,整个<Layout>组件会不必要地重新渲染,其中包括页面的页眉、页脚等。

我已经阅读了有关React.memo()利用的内容shouldComponentUpdate(),但我似乎无法阻止它重新渲染组件<Layout>

我的 console.log 消息触发<Layout>两次,但<ThirdPartyComponent>控制台消息按预期触发一次。这是一个问题吗,还是 React 足够聪明,不会实际更新 DOM,所以我什至不应该担心这个。无缘无故地让它重新渲染我的页眉和页脚似乎很愚蠢。

在控制台中,输出为:

Layout rendered
Layout rendered
3rd party component rendered
Run Code Online (Sandbox Code Playgroud)

index.js(下一个.js 页面)

import React from "react";
import Layout from "../components/Layout";
import ThirdPartyComponent from "../components/ThirdPartyComponent";

class Home extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      ssrDone: false
    };
  }

  componentDidMount() {
    this.setState({ ssrDone: true });
  }

  render() …
Run Code Online (Sandbox Code Playgroud)

reactjs server-side-rendering next.js

5
推荐指数
1
解决办法
1万
查看次数

基本(所有)链接标签是否需要 aria-label?

试图找出为什么 Lighthouse 审核将我的一堆链接标记为未通过elements have discernible names

<h3>
  <a href="https://..." class="custom classes here">My New Post Title</a>
</h3>
Run Code Online (Sandbox Code Playgroud)

我的问题是所有链接都需要吗aria-labels,因为我想如果这只是一个普通链接,则链接内的文本就是所需要的?

或者我的标记结构还有其他问题吗?另一个标记元素是这个:

<a class="custom classes" href="https://...">
  <div class="custom classes" style="background-image: url('https://...');"></div>
  <div class="article-thumbnails-small__title">Post Title</div>
</a>
Run Code Online (Sandbox Code Playgroud)

对于那个,我知道a没有文本,所以aria-label应该放在带有实际帖子标题的 div 上,对吗?

已解决 我看错了元素...祝你有美好的一天。

html lighthouse wai-aria

3
推荐指数
1
解决办法
6224
查看次数