小编Pat*_*und的帖子

如果为false,如何从原型返回输入

我正在尝试返回调用该函数的字符串.

但它不返回字符串...它返回一个数组.

String.prototype.testing = function testing() {
  if (this === "what") {}
  return this //Should return - this is a string
}


x = "this is a string"

y = x.testing()

console.log(y)
Run Code Online (Sandbox Code Playgroud)

javascript

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

“无法读取未定义的属性'createDocumentFragment'”

$(document).ready(function(){
    $(".item-title a").each(function(index) { 
        var yaz = $(this).attr("href");
        $.ajax({
            url: 'https://api-metrica.yandex.com/analytics/v3/data/ga?end-date=today&ids=ga%3A35416355&dimensions=ga:pagePath&metrics=ga:pageviews&filters=ga:pagePath=='+yaz+'&start-date=2015-10-25&oauth_token=AQAAAAAVs-uLAASpEAf-MmJK_kHgpU9Fwv8WArM',
            type: 'get',
            dataType: "jsonp",
            success: function(data){  
                $(this).append(data.rows);
            }
        });
    });
});
Run Code Online (Sandbox Code Playgroud)

控制台:未捕获的TypeError:无法读取未定义的属性'createDocumentFragment'

怎么了
请帮忙。

javascript each jquery this

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

React 16对酶不起作用

我使用反应和酶库进行测试。我迁移到React 16并尝试运行测试。

这是我的适配器文件:

import Enzyme from 'enzyme';
import Adapter from 'enzyme-adapter-react-16';

Enzyme.configure({ adapter: new Adapter() });
Run Code Online (Sandbox Code Playgroud)

这是我的package.json文件:

{
  "name": "some-app",
  "version": "0.1.0",
  "private": true,
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "NODE_ENV=test NODE_PATH=src/ jest --verbose",
    "lint": "eslint .",
    "lint:fix": "npm run lint -- --fix",
    "precommit": "npm run lint -s"
  },
  "dependencies": {
    "react": "^16.2.0",
    "react-datepicker": "0.55.0",
    "react-dom": "^16.2.0",
    "react-fontawesome": "1.6.1",
    "react-google-maps": "8.3.0",
    "react-modal": "2.3.2",
    "react-paginate": "^5.0.0",
    "react-redux": "5.0.6",
    "react-router-dom": "4.2.2",
    "react-router-redux": "4.0.8",
    "react-scripts": "1.0.12",
    "react-tabs": "2.0.0",
    "react-toastify": "2.1.6", …
Run Code Online (Sandbox Code Playgroud)

node.js reactjs enzyme

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

我可以使用 <script async> 加载 babel-polyfill 吗?

我的页面上有一个模式对话框,当用户与页面进行某种交互时会弹出该对话框。

我用 React 制作了它,并使用 webpack 创建了一个简洁的小包,通过 script 标签包含在我的页面中。

因为它使用生成器并且我必须支持 Internet Explorer 11,所以我需要babel-polyfill,所以我的 HTML 代码如下所示:

<script src="//cdnjs.cloudflare.com/ajax/libs/babel-polyfill/6.9.1/polyfill.min.js"></script>
<script src="/survey-modal.js" async></script>
Run Code Online (Sandbox Code Playgroud)

令我困扰的是我正在同步加载 Babel polyfill。如果我将异步添加到第一个脚本标记,我的代码可以工作,但我不确定这是否是确定性的,即代码是否只是偶然工作,因为填充在调查模式脚本之前完成加载。

从 CDN 加载 babel-polyfill 时使用<script async>安全吗?

html javascript reactjs babeljs

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

React Prop 类型根据 Flag 需要不同的 props

我有一个 React 组件,它获取一个配置对象作为道具,它看起来像这样:

{
    active: true,
    foo: {
         bar: 'baz'
    }
}
Run Code Online (Sandbox Code Playgroud)

在某些情况下,我想通过传入不同的对象来禁用组件显示的功能active: false,如下所示:

{
    active: false
}
Run Code Online (Sandbox Code Playgroud)

这工作正常,不是问题。

但是,我还想确保使用我的组件的客户端代码提供正确的配置对象:

  • 如果 active 为真,则需要 foo
  • 如果 active 为 false,则 foo 是可选的,不需要提供

我如何为这样的案例定义道具类型?

我试过了:

MyComponent.propTypes = {
    config: PropTypes.oneOf([
        {
            active: false
        },
        PropTypes.shape({
            active: true,
            foo: PropTypes.shape({
                bar: PropTypes.string.isRequired
            })
        }).isRequired
    ]).isRequired
};
Run Code Online (Sandbox Code Playgroud)

但这给了我以下警告:

警告:失败的道具类型:提供给config的值的无效道具,预期为 [{"active":true},null] 之一。[object Object]MyComponent

在我的组件中

我知道为什么这不起作用:这是因为PropTypes.oneOf不希望动态道具类型匹配器作为值,而只是一个有效参数数组。

问题是,有没有办法让这个工作?

我制作了一个可运行的沙箱示例,您可以在其中尝试上面的示例代码:https : //codesandbox.io/s/n9o0wl5zlj

reactjs react-proptypes

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

如何在我想要提交的文件上运行更漂亮?

使用Husky,我已经设置了package.json一个precommit钩子,以便在每次提交之前使用Prettier格式化我的JavaScript代码:

{
  "name": "prettier-demo",
  "scripts": {
    "precommit": "prettier --write **/*.js && git add ."
  },
  "devDependencies": {
    "husky": "^0.14.3",
    "prettier": "^1.8.2"
  }
}
Run Code Online (Sandbox Code Playgroud)

这很好,但有两个缺点:

  1. 如果我有一个包含数千个JavaScript文件的大型项目,我必须等待Prettier处理所有这些文件,即使只有少数文件已经更改; 这可能需要很长时间,并且在完成每次提交时都会很快就会紧张

  2. 有时我想只提交几个文件进行提交,将其他更改留在提交之外; 因为我git add .在运行Prettier后做了一切,我的所有更改总是会在提交中结束

如何在每次提交之前运行Prettier 只对已经上传的文件,忽略未分级或未更改的文件?

javascript git code-formatting pre-commit-hook prettier

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

为什么我们需要 create-react-app 的 --scripts-version 命令行选项?

我是 React 新手,正在学习如何正确创建新项目。--scripts-version然后我在使用这样的命令创建新项目时遇到:

create-react-app new-project --scripts-version
Run Code Online (Sandbox Code Playgroud)

为什么我们需要使用--scripts-version

javascript reactjs create-react-app

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

如何使用 nvm 设置默认的 Node.js 版本?

我正在使用nvm来管理我的 Node.js 版本。在我的项目中,我在项目根目录中有.nvmrc文件。当我运行时nvm use,我获得了项目所需的 Node.js 版本。

这一切都很好,但是当我打开一个新的控制台窗口时,一开始我总是自动设置一个非常旧的 Node.js 版本。

跑步node -v给了我6.9.5

真正令人讨厌的是,当我使用旧 Node.js 版本使用其 VCS 提交对话框时,我的 IDE (IntelliJ IDEA) 运行预提交钩子,这使得单元测试和提交失败。

我如何才能将特定版本的 Node.js 设置为默认值?

intellij-idea node.js npm nvm

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

React 会在卸载时自动清除 Intervals 吗?

我开始间隔 on componentDidMount,存储返回的间隔 id 并使用clearIntervalon componentWillUnmount,我想知道这是否有必要。

当组件卸载时,是否有垃圾收集类型的东西会杀死间隔?我知道它会在硬刷新时杀死它,但想知道 SPA。

javascript reactjs

-1
推荐指数
2
解决办法
952
查看次数