我正在尝试返回调用该函数的字符串.
但它不返回字符串...它返回一个数组.
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)
$(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'
怎么了
请帮忙。
我使用反应和酶库进行测试。我迁移到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) 我的页面上有一个模式对话框,当用户与页面进行某种交互时会弹出该对话框。
我用 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>安全吗?
我有一个 React 组件,它获取一个配置对象作为道具,它看起来像这样:
{
active: true,
foo: {
bar: 'baz'
}
}
Run Code Online (Sandbox Code Playgroud)
在某些情况下,我想通过传入不同的对象来禁用组件显示的功能active: false,如下所示:
{
active: false
}
Run Code Online (Sandbox Code Playgroud)
这工作正常,不是问题。
但是,我还想确保使用我的组件的客户端代码提供正确的配置对象:
我如何为这样的案例定义道具类型?
我试过了:
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
使用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)
这很好,但有两个缺点:
如果我有一个包含数千个JavaScript文件的大型项目,我必须等待Prettier处理所有这些文件,即使只有少数文件已经更改; 这可能需要很长时间,并且在完成每次提交时都会很快就会紧张
有时我想只提交几个文件进行提交,将其他更改留在提交之外; 因为我git add .在运行Prettier后做了一切,我的所有更改总是会在提交中结束
如何在每次提交之前运行Prettier 只对已经上传的文件,忽略未分级或未更改的文件?
我是 React 新手,正在学习如何正确创建新项目。--scripts-version然后我在使用这样的命令创建新项目时遇到:
create-react-app new-project --scripts-version
Run Code Online (Sandbox Code Playgroud)
为什么我们需要使用--scripts-version?
我正在使用nvm来管理我的 Node.js 版本。在我的项目中,我在项目根目录中有.nvmrc文件。当我运行时nvm use,我获得了项目所需的 Node.js 版本。
这一切都很好,但是当我打开一个新的控制台窗口时,一开始我总是自动设置一个非常旧的 Node.js 版本。
跑步node -v给了我6.9.5。
真正令人讨厌的是,当我使用旧 Node.js 版本使用其 VCS 提交对话框时,我的 IDE (IntelliJ IDEA) 运行预提交钩子,这使得单元测试和提交失败。
我如何才能将特定版本的 Node.js 设置为默认值?
我开始间隔 on componentDidMount,存储返回的间隔 id 并使用clearIntervalon componentWillUnmount,我想知道这是否有必要。
当组件卸载时,是否有垃圾收集类型的东西会杀死间隔?我知道它会在硬刷新时杀死它,但想知道 SPA。