我想在a中实现常量class
,因为在代码中找到它们是有意义的.
到目前为止,我一直在使用静态方法实现以下解决方法:
class MyClass {
static constant1() { return 33; }
static constant2() { return 2; }
// ...
}
Run Code Online (Sandbox Code Playgroud)
我知道有可能摆弄原型,但许多人建议不要这样做.
有没有更好的方法在ES6类中实现常量?
如何在Ecmascript 6中访问json文件?以下不起作用:
import config from '../config.json'
如果我尝试导入JavaScript文件,这可以正常工作.
我希望能够通过将字符串变量传递给函数来实例化特定的ES6类.根据变量的值,将创建一个不同的类.
示例 - 我有2个类ClassOne
,ClassTwo
.我希望能够将变量传递给函数并返回一个新类.类的名称将与变量相关 - 例如.传球'Two'
将创造ClassTwo
.
我不希望只用一个switch
条款是这样的:
function createRelevantClass( desiredSubclassName )
{
let args = [],
newClass;
switch( desiredSubclassName )
{
case 'One' :
newClass = new ClassOne(args);
break;
case 'Two' :
newClass = new ClassTwo(args);
break;
}
return newClass;
}
Run Code Online (Sandbox Code Playgroud)
相反,我想以某种方式能够使用变量名创建构造函数调用.那可能吗?
function createRelevantClass( desiredSubclassName )
{
// desiredSubclassName would be string 'One' or 'Two'
// how to use the 'new' operator or Reflect here to create the …
Run Code Online (Sandbox Code Playgroud) 我有一个简单的组件,它在我的 React 应用程序中充当错误边界,并将任何错误传递给日志记录服务。
它看起来像这样:
export class CatchError extends React.PureComponent {
state = {
hasError: false
}
componentDidCatch(error, info) {
this.props.log({ error, info })
this.setState({ hasError: true })
}
render() {
const child = typeof this.props.children === "function"
? this.props.children({ error: hasError })
: children
return React.cloneElement(child, { error: this.state.hasError })
}
}
Run Code Online (Sandbox Code Playgroud)
是否有一个 React 钩子相当于componentDidCatch
这样我可以使这个组件成为一个函数而不是一个类?
所以它可能看起来像这样:
export function CatchError({ children, log }) {
const [hasError, setHasError] = useState(false)
const caught = useDidCatch()
useEffect(() => {
const [error, info] …
Run Code Online (Sandbox Code Playgroud) 我有一个间谍,它在一个套件的多个测试中的多个断言中使用。
如何清除或重置间谍,以便在每次测试中都认为间谍未拦截间谍方法?
例如,如何使断言'does not run method'
为真?
const methods = {
run: () => {}
}
const spy = jest.spyOn(methods, 'run')
describe('spy', () => {
it('runs method', () => {
methods.run()
expect(spy).toHaveBeenCalled() //=> true
})
it('does not run method', () => {
// how to make this true?
expect(spy).not.toHaveBeenCalled() //=> false
})
})
Run Code Online (Sandbox Code Playgroud) 在 Chrome 开发人员工具的“网络”选项卡中,单击列标题并按该列对表格进行排序后,如何“取消排序”表格并恢复 Chrome 的默认网络表格顺序?
sinon.spy有2个参数,对象和函数名.
我有一个如下所列的模块:
module.exports = function xyz() { }
我该如何定义间谍xyz
?我没有要使用的对象名称.
思考?
我在Visual Studio代码中使用Angular2.在visual studio代码中它显示错误,如下所示:
如图所示,Promise
用红色下划线突出显示.另外我有另一个问题是如果我们定义内联函数,那么Visual Studio代码也会在函数名称下面显示红色下划线.与response
上图中的红色下划线相似.
但是我的代码在浏览器中工作正常.但是在VS Code中它显示了红色下划线.
我不想在我的代码中添加任何红色下划线.可能吗 ?任何人都可以帮我解决这个问题吗?
我需要编写一个可在全局窗口上使用的模块.
我正在使用es6来创建模块,我定义的每个类都有自己的文件.
我正在使用webpack来babelify并捆绑这些类.
我的模块的入口点也是包含要公开的全局的文件.
我已经尝试过各种方法来实现这个可能性,包括:
我试过的代码示例:
我想得到:window.MyMod
// mymod.js
export class MyMod {
constructor(aaa) {
this.aaa = aaa;
}
toString() {
return this.aaa;
}
}
Run Code Online (Sandbox Code Playgroud)
// webpack.config
var entries = [
'./src/mymod.js'
];
module.exports = {
...,
module: {
loaders: [
{
test: require.resolve('./src/mymod.js'),
loader: 'expose?MyMod'
},
{
test: /\.js$/,
exclude: /node_modules/,
loader: 'babel-loader',
query: {
presets: ['es2015']
}
}
]
}
Run Code Online (Sandbox Code Playgroud)
这只会让我在包含MyMod作为构造函数的窗口上找到一个MyMod对象.
任何帮助将不胜感激.