小编Dan*_*ger的帖子

忽略或阻止ESLint错误破坏React项目中的构建(create-react-project)

我最近创建了一个项目create-react-project.

问题在于,在我开发的过程中,每次ESLint出现问题时,构建都会中断并且不会编译代码.

我是否可以保持构建运行,同时仍然运行ESLint并报告我稍后会修复的错误?

reactjs eslint webpack webpack-2 eslintrc

13
推荐指数
3
解决办法
8949
查看次数

Next.js - 如何使用文字 onload 属性字符串值在 <head> 内添加 <link> 标记?

在 Next.js 项目中,我希望获得一些初始 HTML,其中的内容完全相同<head>

<link href="..." rel="stylesheet" media="print" onload="this.media='all'" />
Run Code Online (Sandbox Code Playgroud)

我在 Next.js<Head>组件内的代码中包含以下内容:

{ /* @ts-ignore */ }
<link href="..." rel="stylesheet" media="print" onload="this.media='all'" />
Run Code Online (Sandbox Code Playgroud)

如果没有@ts-ignore它,它会说:

类型“DetailedHTMLProps<LinkHTMLAttributes, HTMLLinkElement>”上不存在属性“onload”。您指的是“onLoad”吗?TS(2322)

如果我使用onLoad而不是onload我得到:

类型“string”不可分配给类型“(event: SyntheticEvent<HTMLLinkElement, Event>) => void”。TS(2322)

问题是我得到的服务器端生成的 HTML 有:

<link href="..." rel="stylesheet" media="print" />
Run Code Online (Sandbox Code Playgroud)

只有当页面重新水化后,它才会更新为:

<link href="..." rel="stylesheet" media="all" onload="this.media='all'">
Run Code Online (Sandbox Code Playgroud)

我在 GitHub 上发现了这个问题,但它没有帮助,因为我没有使用 Google Fonts,而是使用 Typography.com,所以我无法使用next-google-fonts: https: //github.com/vercel/next.js/issues/ 12984

我正在考虑ref向该link标签添加 a 并使用 设置属性setAttribute,这希望也能在服务器端工作,但想知道是否有更简单的方法来做到这一点。

javascript head reactjs server-side-rendering next.js

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

如何使用 MongoDB/Mongoose 中的先前值更新字段

例如,我有一些如下所示的文档:

{
    id: 1
    name: "foo"
}
Run Code Online (Sandbox Code Playgroud)

我想将另一个附加string到当前name字段值。

我使用 Mongoose 尝试了以下操作,但没有成功:

Model.findOneAndUpdate({ id: 1 }, { $set: { name: +"bar" } }, ...);
Run Code Online (Sandbox Code Playgroud)

mongoose mongodb node.js

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

汇总捆绑对等依赖项/MUI 的多个实例使 ThemeProvider 无法工作

我正在处理两个不同的存储库,lib并且apps.

\n
    \n
  • lib有一些用MUI制作的 React 组件,我想在 中使用apps它们,并且是用 Rollup 构建的。

    \n
  • \n
  • apps是一个带有 Next.js 应用程序的 Lerna monorepo,该应用程序lib作为依赖项导入以使用其组件,可以自定义将它们包装在<ThemeProvider>自定义主题中。

    \n
  • \n
\n

但是,这不起作用,因为存在 MUI / 的重复实例ThemeProvider,我可以通过将其添加到lib\ 的入口点来验证:

\n
if (process.browser) {\n  (window as any)._React = React;\n  (window as any)._ThemeProvider = ThemeProvider;\n}\n
Run Code Online (Sandbox Code Playgroud)\n

然后将其放入apps\':

\n
if (process.browser) {\n  const {\n    _React,\n    _ThemeProvider,\n  } = window as any;\n\n  console.log(_React ? (_React === React ? "\xe2\x9c\x85 …
Run Code Online (Sandbox Code Playgroud)

rollup npm material-ui lerna next.js

6
推荐指数
0
解决办法
2522
查看次数

React - 使用 JSX 从 ES6 模板文字动态创建标签

我需要在 Reactrender方法中显示标题元素,其中级别在构造函数中动态设置:

class HeaderComponent extends React.Component {

    constructor(props){
        super(props);
        
        this._checkedDepth = Math.min(6, props.depth)
    }

    render(){
        return(<h{ this._checkedDepth }>{ this.props.name }</h{ this._checkedDepth }>)
    }
}

ReactDOM.render(
  <HeaderComponent name="Header 1" depth="2"/>,
  document.getElementById('app')
);
Run Code Online (Sandbox Code Playgroud)
<div id="app"></div>

<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
Run Code Online (Sandbox Code Playgroud)

这应该<h2>Header 1</h2>name="Header 1"and呈现depth=2,但我收到一个错误:

未捕获的错误:找不到模块“./HeaderComponent”

我在看什么?

我使用React 15.4.1babel-preset-es2015 6.9.0babel-preset-react 6.5.0和运行它Chrome 55

reactjs template-strings babeljs

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

在 JavaScript 中捕捉拖放项目

我正在尝试使用拖放将图片从一个移动<div>到另一个。

目前,我可以将图片移动到目的地的任何位置<div>,但我真正想要的是图片在放下时会对齐。理想情况下,它们可以在任何一侧(不仅仅是在底部或右侧)咬合在一起。

我尝试了一些不同的事情(包括使用<canvas>),但没有奏效。

这是我到目前为止:

var clone;
var offsetx = null;
var offsety = null;
var isClone = false;

function allowDrop(ev) {
  ev.preventDefault();
}

function drag(ev) {
  offsetx = ev.target.offsetLeft - event.clientX;
  offsety = ev.target.offsetTop - event.clientY;
  
  ev.dataTransfer.setData("text", ev.target.id);
}

function dropTrash(ev) {
  ev.preventDefault();

  var data = ev.dataTransfer.getData("text");
  var remove = document.getElementById(data);

  remove.parentNode.removeChild(remove);
}

function drop(ev) {
  ev.preventDefault();
  
  var data = ev.dataTransfer.getData("text");
}

function dropClone(ev) {
  ev.preventDefault();
  
  var data = ev.dataTransfer.getData("text");
  var num = Math.random() …
Run Code Online (Sandbox Code Playgroud)

html javascript css drag-and-drop

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

在WebStorm和SourceTree中使用NVM时Git Hooks错误

我正在使用nvm--no-use标志,因为这导致我的终端启动非常慢。这意味着我总是需要nvm use <NODE_VERSION>在新的终端选项卡上运行才能使用nodenpm

我有一个使用Git Hooks配置的项目ghooks,因此,每次移至其他分支或提交某些内容时,WebStorm和SourceTree都会收到不同类型的错误,所有错误都node找不到。这些是其中一些:

SourceTreecheckout

git -c diff.mnemonicprefix=false -c core.quotepath=false -c 
credential.helper=sourcetree checkout BRANCH
Switched to branch 'BRANCH'
M   ...
M   ...
...
env: node: No such file or directory
Completed with errors, see above
Run Code Online (Sandbox Code Playgroud)

WebStormcommit

Commit failed with error
0 files committed, 3 files failed to commit: COMMIT_MESSAGE env: node: No such file or directory
Run Code Online (Sandbox Code Playgroud)

在WebStorm中,我认为手动设置node要使用的版本(在之下Preferences > …

git githooks node.js webstorm nvm

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

在JavaScript中拆分分隔字符串与JSON解析效率

我需要通过AJAX检索大量数据(坐标加上额外的值).数据格式为:

-72.781;;6,-68.811;;8
Run Code Online (Sandbox Code Playgroud)

请注意,正在使用两种不同的分隔符:;;,.

我应该只返回一个分隔的字符串并使用String.split()(两次)或者是否更好地返回一个JSON字符串并用于JSON.parse()解压缩我的数据?每种方法的最差和最好的是什么?

javascript performance json split string-parsing

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

Web Audio API:停止播放所有预定的声音

所以我有一堆加载的音频样本,我在下面的代码中调用调度函数:

let audio;

function playChannel() {
    let audioStart = context.currentTime;
    let next = 0;

    for(let i = 0; i < 8; i++) {
        scheduler(audioStart, next);
        next++;
    }
}
Run Code Online (Sandbox Code Playgroud)

这是音频调度程序功能:

function scheduler(audioStart, index) {
    audio = context.createBufferSource(); 
    audio.buffer = audioSamples[index];  //array with all the loaded audio
    audio.connect(context.destination);  
    audio.start(audioStart + (audio.buffer.duration * index));
}
Run Code Online (Sandbox Code Playgroud)

它工作正常并按预期播放预定的声音。

我该如何停止/取消所有预定的声音播放?

因为现在当我尝试调用该stop()方法时,它只会停止播放最后一个预定的声音。

html javascript audio html5-audio web-audio-api

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

根据宽度/大小对多个 Flexbox 行中的元素进行排序

假设我有一组这样的列表项(某种类别):

ul.categoryList {
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  width: 180px;
}

ul.categoryList > li {
  list-style: none;
}
Run Code Online (Sandbox Code Playgroud)
<ul class="categoryList">
  <li>Literature</li>
  <li>Science Fiction and Fantasy</li>
  <li>Harry Potter</li>
  <li>Movies and Films</li>
  <li>Books</li>
</ul>
Run Code Online (Sandbox Code Playgroud)

<ul>是在 a 内<div>max-width如果调整窗口大小或在不同的分辨率/设备(手机、平板电脑等)上, a 可以更改。

正如您所看到的,某些列表项比其他项长。假设此容器<ul>只能包含列表项Science Fiction and Fantasy和更多内容,因此下一项将转到下一行,因为它不适合同一行。

正如您可能看到的那样,问题在于LiteratureBooks可能位于同一行,但由于它们不连续,因此它们最终会出现在单独的行上,这同样适用于其他项目。

因此,我没有将一些最短的项目放在一起以消耗更少的行,而是得到 5 行(实际上每个项目一个),这很消耗空间。

有没有什么办法解决这一问题?可以只用 CSS 来完成还是需要 JavaScript 来完成?

javascript css sorting listitem flexbox

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