小编Col*_*rdo的帖子

Snackbar通过MaterialUI在对话框上

我将React与Material UI库一起使用,并且具有以下组件层次结构:

<RootContainer>
  <SnackBar />
  <HomeContainer>
    <LoginModal />
  </HomeContainer>
</RootContainer>
Run Code Online (Sandbox Code Playgroud)

我的问题是,即使Snackbar的zIndex增加到,它也会显示在LoginModal的下面9999

在此处输入图片说明

将Snackbar 放置在模态(或更确切地说,模态的背景)上的正确方法是什么?

reactjs material-ui

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

保留选项卡视图页面之间的状态

问题

我有ListViews一个TabBarView使用a的两个渲染TabController.

如何在每个之间保留状态(缺少更好的单词),ListView以便:1)小部件不重建,2)ListView在标签之间记住位置.

相关代码

class AppState extends State<App> with SingleTickerProviderStateMixin {
  TabController _tabController;

  @override
  void initState() {
    super.initState();
    _tabController = new TabController(
      vsync: this,
      length: _allPages.length,
    );
  }

  @override
  void dispose() {
    _tabController.dispose();
    super.dispose();
  }

  Widget _buildScaffold(BuildContext context) {
    return new Scaffold(
      appBar: new AppBar(
        title: new Text('headlines'),
        bottom: new TabBar(
            controller: _tabController,
            isScrollable: true,
            tabs: _allPages
                .map((_Page page) => new Tab(text: page.country))
                .toList()),
      ),
      body: new TabBarView(
          controller: _tabController, …
Run Code Online (Sandbox Code Playgroud)

dart flutter

5
推荐指数
3
解决办法
5554
查看次数

检查是否从Node.js脚本中安装了软件包

我正在尝试使用Node.js进行脚本编写。

我有一个脚本,在其中检查的存在./node_modules/some-package。如果不存在,some-package则进行安装。

但是,这似乎有点骇人听闻。

有没有更好的方法来检查脚本中是否安装了特定软件包?

样例代码

const fs = require('fs');
let installed;

try {
  fs.accessSync('./node_modules/.bin/some-package');
  installed = true;
} catch (err) {
  installed = false;
}
Run Code Online (Sandbox Code Playgroud)

node.js

4
推荐指数
2
解决办法
3815
查看次数

样式化的组件TypeScript

styled-components在正常的React.js中使用,我可以做到:

const Container = styled.div({
  userSelect: `none !important`,
})
Run Code Online (Sandbox Code Playgroud)

但是使用TypeScript我得到了错误:

Argument of type '{ userSelect: string; }' is not assignable to parameter of type 'TemplateStringsArray'.
  Object literal may only specify known properties, and 'userSelect' does not exist in type 'TemplateStringsArray'.ts(2345)

Run Code Online (Sandbox Code Playgroud)

解决此问题的最佳方法是什么?

我不想使用styled.div模板字符串方法,因为我发现它不太灵活。

例如,对于模板字符串,我们无法执行以下操作:

const flex = {
  flex: display: flex,
  col: flexDirection: `column`
}

const FlexRow = styled.div({
  ...flex.flex,
})

const FlexCol = styled.div({
   ...flex.flex,
   ...flex.col,
})
Run Code Online (Sandbox Code Playgroud)

javascript typescript reactjs styled-components

4
推荐指数
2
解决办法
508
查看次数

将 useEffect 与事件侦听器一起使用

我遇到的问题是,当我设置事件侦听器时,事件侦听器看到的值不会随状态更新。就好像它绑定到初始状态。

这样做的正确方法是什么?

简单的例子:

import React, { useState, useEffect } from "react";
import ReactDOM from "react-dom";

const App = () => {
  const [name, setName] = useState("Colin");
  const [nameFromEventHandler, setNameFromEventHandler] = useState("");

  useEffect(() => {
    document.getElementById("name").addEventListener("click", handleClick);
  }, []);

  const handleButton = () => {
    setName("Ricardo");
  };

  const handleClick = () => {
    setNameFromEventHandler(name);
  };

  return (
    <React.Fragment>
      <h1 id="name">name: {name}</h1>
      <h2>name when clicked: {nameFromEventHandler}</h2>
      <button onClick={handleButton}>change name</button>
    </React.Fragment>
  );
};

const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);
Run Code Online (Sandbox Code Playgroud)

下面的 Gif,因为 SO …

javascript reactjs

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

TypeScript:将函数调用转换为非空

例如:

const order = await Order.findById(orderId);
Run Code Online (Sandbox Code Playgroud)

然后:

order.thing = something;
Run Code Online (Sandbox Code Playgroud)

警告order可能为空。

这可以通过以下方式静音:

order!.thing = something;
Run Code Online (Sandbox Code Playgroud)

我的问题是:有没有办法指定order初始化时不会为空?

例如有没有类似的东西:

const order = await Order.findById(orderId)!;
Run Code Online (Sandbox Code Playgroud)

或者

const order! = await Order.findById(orderId);
Run Code Online (Sandbox Code Playgroud)

javascript typescript

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

根div填充React(样式组件)

我有一个简单的React应用程序,使用Redux Provider来包装我的App组件.

import React from 'react';
import ReactDOM from 'react-dom';
import styled from 'styled-components';
import { Provider } from 'react-redux';
import App from './App';
import store from './store';
import registerServiceWorker from './registerServiceWorker';

const MainContainer = styled.div`
  margin: 0;
  padding: 0;
  height: 100vh;
  background-color: red;
`;

ReactDOM.render(
  <MainContainer>
    <Provider store={store}>
      <App />
    </Provider>
  </MainContainer>,
  document.getElementById('root'),
);

registerServiceWorker();
Run Code Online (Sandbox Code Playgroud)

但是,当此应用程序呈现时,屏幕的边缘(所有边)周围会出现白色间隙.覆盖body标签以使App内容进入屏幕边缘的正确方法是什么?

白边应该不存在.

css reactjs styled-components

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

在列表中连接元组的元素

我有一个元组列表:

[('fruit', 'O'), ('is', 'O'), ('the', 'O'), 
 ('subject', 'O'), ('of', 'O'), ('a', 'O'), 
 ('Roald', 'PERSON'), ('Dahl', 'PERSON'), ('children', 'O'), 
 ("'s", 'O'), ('book', 'O'), ('?', 'O')]`
Run Code Online (Sandbox Code Playgroud)

我想将此列表缩减为:

[('fruit', 'O'), ('is', 'O'), ('the', 'O'), 
 ('subject', 'O'), ('of', 'O'), ('a', 'O'), 
 ('Roald Dahl', 'PERSON'), ('children', 'O'), 
 ("'s", 'O'), ('book', 'O'), ('?', 'O')]`
Run Code Online (Sandbox Code Playgroud)

也就是说,任何第二个值不是"O"的连续元组都应该将它们的第一个值连接起来.这适用于任何长度的列表,以及任何数量的连续元组.

尝试

def join_tags(list_tags):
  res = []
  last_joined = None
  last_seen = (None, None)

  for tup in list_tags:
    if tup[1] == 'O':
      res.append(tup)
      last_joined = None
    else:
      if tup[1] == last_seen[1]: …
Run Code Online (Sandbox Code Playgroud)

python

0
推荐指数
1
解决办法
88
查看次数