小编Flo*_*elt的帖子

React Router v4具有多种布局

我想在我的公共布局中渲染我的一些路线,以及我的私人布局中的其他一些路线,是否有一个干净的方法来做到这一点?

示例显然不起作用,但我希望大致解释我正在寻找的内容:

<Router>

  <PublicLayout>
    <Switch>
      <Route exact path="/" component={HomePage} />
      <Route exact path="/about" component={AboutPage} />
    </Switch>
  </PublicLayout>

  <PrivateLayout>
    <Switch>
      <Route exact path="/profile" component={ProfilePage} />
      <Route exact path="/dashboard" component={DashboardPage} />
    </Switch>
  </PrivateLayout>

</Router>
Run Code Online (Sandbox Code Playgroud)

我想要切换某些路由的布局,如何使用新的路由器做到这一点?

嵌套路由不再有效,并给我这个错误:

You should not use <Route component> and <Route children> in the same route; <Route children> will be ignored
Run Code Online (Sandbox Code Playgroud)

编辑:布局包装整个路径组也意味着只要您保留在同一个私有/公共路由组中,这些布局只会呈现一次.如果您的布局必须从您的服务器获取某些内容,这是一个大问题,因为如果您使用布局包装每个页面,那么每次更改都会发生这种情况.

reactjs react-router

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

暂时禁用react-loadable

使用时react-loadable,这些异步组件中引发的错误(例如错误的导入)不会轻易提醒您。

我希望能够在开发环境中禁用react-loadable(绕过它,并同步加载所有内容)并在生产环境中启用它,但是我不知道如何重写react-loadable来完成这项工作:

import Loadable from 'react-loadable';
import LoadingComponent from './Loading';

// My reused loadable component everywhere
// In production
export default options =>
  Loadable({
  loading: LoadingComponent,
  delay: 200,
  ...options,
});

// Ideally a dev version that skips loadable
// In development, without any async import
export default options => options.loader(); // Does not work
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点?

javascript reactjs react-loadable

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

悬停样式上的Material-UI [v0.x] RaisedButton

我想在悬停时更改Material-UI RaisedButton的样式,但似乎没有特定的选项可以做到这一点,因为悬停时发生的事情是由材料设计指南定义的.

然而,有什么方法可以在悬停在按钮上时更改按钮的样式(主要是颜色和背景颜色)吗?

我看到m-ui为它们的按钮使用了很多不同的层,并且当前在按钮顶部添加了一个白色透明背景,以便它可以很好地适应所有主题颜色.

(更确切地说,我想反转颜色和背景颜色之间的颜色.)

css reactjs material-ui

9
推荐指数
2
解决办法
2万
查看次数

为什么字体大小会增加输入的宽度

我想知道为什么font-size在 HTML 上设置CSS 属性会input自动增加其宽度?

我明白为什么它会增加高度,但我希望input在更改font-size.

我问的原因是因为它破坏了我正在构建的 flex 布局,其中有一个input. 当我增加字体大小时,input完全脱离了布局。

这是一个(反应)再现:

<div
  style={{
    backgroundColor: 'blue',
    display: 'flex',
    flexDirection: 'column',
    maxWidth: 400,
    padding: 20,
    alignItems: 'center',
  }}
>
  <div style={{ display: 'flex' }}>
    <span>Some text</span>
    <input style={{ 'font-size': 20 }} />{' '}
  </div>

  <div style={{ display: 'flex' }}>
    <span>Some text</span>
    <input style={{ 'font-size': 50 }} />
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

有没有干净的方法来解决这个问题?

html css flexbox

7
推荐指数
2
解决办法
1359
查看次数

在 VSCode 正则表达式搜索中匹配文件的开头

我正在尝试在 VSCode 正则表达式搜索中匹配文件的开头以查找并删除以下模式:

//
Anything else to leave in place
etc.
Run Code Online (Sandbox Code Playgroud)

我想删除所有包含//\n第一个字符的文件中的第一行。但是,当我执行正则表达式搜索时,//\n它显然会匹配所有文件中的所有出现,无论它们在文件中的位置如何。

正则表达式语言\A在某些编辑器中提到匹配行或文件的开头的存在,但 VSCode 拒绝此正则表达式为无效:\A//\n

所以我的问题是,如何在 VSCode 中匹配文件的开头来实现我所需要的?

regex visual-studio-code

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

删除与过滤器匹配的所有应用

有没有一种快速的方法来做这样的事情:

cf delete *-failed

删除所有以-failed?结尾的应用程序

cloud-foundry

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

使用@testing-library/react 对 react-router 的链接进行最简单的测试

我试图了解如何最好地测试 react-router 的行为是否符合@testing-library/react 的预期。

我能想到的最简单的测试是验证单击链接是否会更改 URL。我知道理想情况下我应该测试单击链接会呈现一个新组件,但这会为测试增加很多样板。

所以这是我失败的例子:

import { MemoryRouter } from 'react-router-dom';
import { render } from '@testing-library/react';
import { createMemoryHistory } from 'history';

it('routes to a new route', async () => {
  const history = createMemoryHistory();
  const { getByText } = render(
    <MemoryRouter history={history}>
      <Link to="/hello">Click me</Link>
    </MemoryRouter>
  );

  fireEvent.click(getByText('Click me'));
  await waitFor(() => expect(history.location.pathname).to.equal('/hello')); // Fails
});
Run Code Online (Sandbox Code Playgroud)

javascript reactjs react-router react-testing-library

6
推荐指数
2
解决办法
4690
查看次数