小编ron*_*yrr的帖子

React路由器与React 16.6 Suspense"无效的prop`组件`类型`object`提供给`Route`,期望`function`."

我正在使用React的最新版本(16.6)和react-router(4.3.1)并尝试使用代码分割React.Suspense.

虽然我的路由工作正常并且代码确实分裂成了几个动态加载的bundle,但我收到的警告是不返回一个函数,而是一个对象Route.我的代码:

import React, { lazy, Suspense } from 'react';
import { Switch, Route, withRouter } from 'react-router-dom';

import Loading from 'common/Loading';

const Prime = lazy(() => import('modules/Prime'));
const Demo = lazy(() => import('modules/Demo'));

const App = () => (
  <Suspense fallback={<Loading>Loading...</Loading>}>
    <Switch>
      <Route path="/" component={Prime} exact />
      <Route path="/demo" component={Demo} />
    </Switch>
  </Suspense>
);

export default withRouter(App);
Run Code Online (Sandbox Code Playgroud)

控制台警告如下: Warning: Failed prop type: Invalid prop `component` of type `object` supplied to `Route`, expected `function`. …

dynamic-import reactjs react-router react-router-v4 react-16

19
推荐指数
2
解决办法
8611
查看次数

Objective-C检查带有int的数组是否包含int

伙计们,我正在努力做到以下几点.我有一个名为'specialLevels'的数组(NSArray),该数组如下所示:

specialLevels = @[@2, @4, @6, @9];
Run Code Online (Sandbox Code Playgroud)

这应该是一个int数组.我也得到了int'urrentLevel'(基本int无对象).

我想检查currentLevel是否在特殊级别的de数组中.我知道方法'containsObject'存在,但这在我的情况下不起作用.

在这种情况下,你们会建议做什么?

所以我想到了这一点,但感觉有点奇怪:

if ([specialLevels containsObject:[NSNumber numberWithInt:currentLevel]]) {
 // other code in here
}
Run Code Online (Sandbox Code Playgroud)

arrays int objective-c ios

8
推荐指数
2
解决办法
7130
查看次数

使用Lazy + Suspense反应预加载组件

我目前正在使用带有Suspense和Lazy的React 16来拆分我的代码库。虽然我想预加载组件。

在下面的示例中,我有两条路线。挂载Demo后有Prime没有预加载的方法?我尝试componentDidMountPrime页面的中创建另一个动态导入,但React.lazy似乎并没有获得与下面的动态导入相同的文件。

import React, { lazy, Suspense } from 'react';
import { Switch, Route, withRouter } from 'react-router-dom';
import GlobalStyle from 'styles';

import Loading from 'common/Loading';
const Prime = lazy(() => import(/* webpackChunkName: "Prime" */'modules/Prime'));
const Demo = lazy(() => import(/* webpackChunkName: "Demo" */'modules/Demo'));

const App = () => (
  <main>
    <GlobalStyle />
    <Suspense fallback={<Loading>Loading...</Loading>}>
      <Switch>
        <Route path="/" component={Prime} exact />
        <Route path="/demo" component={Demo} />
      </Switch>
    </Suspense>
  </main>
); …
Run Code Online (Sandbox Code Playgroud)

preload dynamic-import reactjs react-16

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

CSS :after 位于父元素之后

:after是否有可能在其父元素的背景后面 获取 CSS 伪元素?

的背景:after包含与父元素的背景相同的尺寸。所以目前看起来是这样的:

在此输入图像描述

但我希望红色背景 ( :after) 位于父元素后面。所以我添加了position: relative父元素和absolute伪元素。

试图存档这个我使用了这段代码:

.btn {
  position: relative;
  display: inline-block;
  padding: .8rem 1rem;
  font-size: 1rem;
  background: #000;
}

.btn:after {
  position: absolute;
  bottom: -0.3rem; right: -0.3rem;
  z-index: -1;

  width: 100%; height: 100%;
  content:'';
  background: red;
}
Run Code Online (Sandbox Code Playgroud)
<a href="" class="btn">
  This is my button
</a>
Run Code Online (Sandbox Code Playgroud)

奇怪的是上面的代码片段就像魅力一样。但在我的实时示例中,显示的代码与本主题中的图像完全相同。有人知道实时站点出了什么问题吗?

css z-index behind

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

React Router v6 子路由不渲染

使用 React Router v6 我想渲染回调页面。尽管我无法从屏幕中的 element 属性获取输出。我只从 out 获取输出,并且回调页面始终是空白屏幕或 404。新的 React Router 缺少什么?

const App: React.FC = () => (
  <>
    <GlobalStyle />
    <Suspense fallback={<Loading fullScreen />}>
      <Routes>
        <Route path="/" element={<PrivateRoute component={Home} />} />
        <Route path="/login" element={<PublicRoute component={Login} />} />
        <Route path="/auth/*" element={<p>auth</p>}>
          <Route path="callback" element={<p>callback</p>} />
        </Route>
      </Routes>
    </Suspense>
  </>
);
Run Code Online (Sandbox Code Playgroud)
const App: React.FC = () => (
  <>
    <GlobalStyle />
    <Suspense fallback={<Loading fullScreen />}>
      <Routes>
        <Route path="/" element={<PrivateRoute component={Home} />} />
        <Route path="/login" element={<PublicRoute component={Login} />} />
        <Route …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs react-router

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

多个边框,带有填充,图像周围

我想在我的图像周围创建多个边框,带有一些填充,如下所示.我更喜欢用CSS做这个,但我不知道这是否可行.

当我用Google搜索时,我只发现这样的例子,使用框阴影直接在对象周围有多个边框.

我尝试使用边框和图像周围填充来创建它.但填充甚至没有成功,并且像上面的例子中的盒子阴影我不会得到像我想要的东西.

你们怎么处理这个问题,甚至可能吗?

编辑:对不起,忘了显示我目前拥有的:代码笔链接

这就是我想要做的

css image border

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

为什么Service Worker无法在Android版Chrome上运行?

目前,我正在尝试使用Samsung Tab A构建Web应用程序。我认为该设备将支持Service Workers,原因是以下“我可以使用”说需要运行Android的Chrome for Android 55。

平板电脑正在运行Android 6.0.1(无可用更新)和Chrome 55.0.2,但不幸的是,当运行下面显示的代码时,会弹出“ no sw”警报。SW在台式机上的Chrome(Mac OS)上运行良好)。

if('serviceWorker' in navigator) {
  navigator.serviceWorker.register('/sw.js').then((registration) => {
    alert('sw');
    console.log('ServiceWorker successful, scope: ', registration.scope);
  }).catch((err) => {
    alert('no sw');
    console.log('ServiceWorker failed: ', err);
  });
}
Run Code Online (Sandbox Code Playgroud)

我是在做错什么,还是无法在这种平板电脑上运行SW?如果Chrome 55还不够,还需要什么?我认为有关此主题的信息有所欠缺,因为我找不到有关此问题的答案.. :(

提前致谢!

编辑:我已经启用了多个标志,chrome://flags但没有成功。

javascript android google-chrome service-worker

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

NodeJS延迟发送电子邮件

我正在使用NodemailerNodeJS / Express服务器中发送邮件。我不想直接发送邮件,而是要等待20分钟才能发送邮件。我认为这比直接发送邮件更具个性。

但是我不知道如何实现这一目标。我想我不需要像这样的NodeCron程序包之类的NodeJS cronjob之类的东西,还是吗?

router.post('/', (req, res) => {
    const transporter = nodemailer.createTransport(smtpTransport({
      host: 'smtp.gmail.com',
      port: 465,
      auth: {
          user: 'noreply@domain.nl',
          pass: 'pass123'
      }
    }));

    const mailOptions = {
      from: `"${req.body.name}" <${req.body.email}>`,
      to: 'info@domain.nl',
      subject: 'Form send',
      html: `Content`
    };

    transporter.sendMail(mailOptions, (error, info) => {
      if (error) res.status(500).json({ responseText: error });
      res.status(200).json({ responseText: 'Message send!' });
    });
  }
}); 
Run Code Online (Sandbox Code Playgroud)

我的路由器如下图所示。因此,如果调用post,我希望此请求等待20分钟。我不想执行一次cronjob,而是只执行一次,但有一点延迟。有关如何执行此操作的任何建议?

javascript node.js express nodemailer

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

来自视频和图像/蒙版的画布drawImage()尺寸

我有一个带有视频元素和掩码图像的容器,如下所示:

<div id="container">
    <img id="mask" src="/images/mask.png" width="1078" height="1508" />
    <video autoplay="" id="video"></video>
</div>
Run Code Online (Sandbox Code Playgroud)

你们可以看到掩模图像的宽度为1078px,高度为1508px.视频元素的宽度也是1078像素,但高度仅为807像素(不必更长).

canvas元素具有相同的宽度和高度.当我尝试拍摄视频的快照并将该快照和蒙版图像的副本绘制到画布时,两个元素都在画布边界之外被拉伸.

var context = canvas.getContext('2d');

// Draw video
context.drawImage(video, 0, 0);

// Get mask image and draw mask
maskObj.src = document.getElementById("mask").src;
context.drawImage(maskObj, 0, 0);
Run Code Online (Sandbox Code Playgroud)

我知道我可以通过drawImage()函数传递更多参数,但我不知道其他参数究竟是什么.文章说,你可以只传递宽度和高度为一个整数.但如果我做以下事情:

context.drawImage(video, 0, 0, 1078, 807);
context.drawImage(maskObj, 0, 0, 1078, 1508);
Run Code Online (Sandbox Code Playgroud)

它仍然在画布边界之外绘制元素.无法真正找出我做错了所以所有的帮助表示赞赏.

例; 在此输入图像描述

javascript canvas dimensions drawimage

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

UITableView在滚动时重叠

在我的故事板中,我有一个表格视图.我正在使用从JSON文件加载的数据(在viewDidLoad中加载)填充该表视图.

在我的UITableView中,我确实将"Prototype Cells"设置为1,因此我可以轻松选择附件.我的Prototype Cell有一个Seque到一个新视图,需要显示所选项目的详细信息.

我用以下方式以编程方式填充我的单元格:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *videoTableIdentifier = @"VideoCell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:videoTableIdentifier];

    if (cell == nil)
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:videoTableIdentifier];

    UILabel * title = [[UILabel alloc] initWithFrame:CGRectMake(40,5, 240,20)];
    [cell addSubview:title];
    [title setText:[[videos objectAtIndex:indexPath.row] objectForKey:@"title"]];

    UILabel * detail = [[UILabel alloc] initWithFrame:CGRectMake(40,28, 100,10)];
    [cell addSubview:detail];
    [detail setText:[NSString stringWithFormat:@"Year: %@", [[videos objectAtIndex:indexPath.row] objectForKey:@"year"]]];

    [cell addSubview:[[UIImageView alloc] initWithImage:[UIImage imageNamed:[[videos objectAtIndex:indexPath.row] objectForKey:@"image"]]]];

    return cell;
}
Run Code Online (Sandbox Code Playgroud)

当我开始滚动时,会发生以下情况: 在此输入图像描述

所以我开始寻找解决方案,发现我必须设置:dequeueReusableCellWithIdentifier:videoTableIdentifier"nil".

虽然我这样做了,但这解决了我的问题,现在我的Prototype …

scroll objective-c uitableview overlapping

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