我如何选择在JSX中包含一个元素?下面是一个使用横幅的示例,如果已经传入,该横幅应该在组件中.我想要避免的是必须在if语句中复制HTML标记.
render: function () {
var banner;
if (this.state.banner) {
banner = <div id="banner">{this.state.banner}</div>;
} else {
banner = ?????
}
return (
<div id="page">
{banner}
<div id="other-content">
blah blah blah...
</div>
</div>
);
}
Run Code Online (Sandbox Code Playgroud) 我有一些道具,其中包含一个字符串,可以包含&等字符.它还包含空格.我想替换所有空格 .
有一种简单的方法可以做到这一点吗?请记住,我不能只使用以下语法进行渲染:
<div dangerouslySetInnerHTML={{__html: myValue}} />
Run Code Online (Sandbox Code Playgroud)
因为我首先必须用他们的标记替换任何HTML实体.我不想这样做,看起来水平太低了.
有没有办法可以做到这一点?
有没有一种快速方法可以从Chrome DevTools中显示的jsx代码切换到原始ES5并再次返回?
如何在对象破坏期间重命名目标?
const b = 6;
const test = { a: 1, b: 2 };
const {a, b as c} = test; // <-- `as` does not seem to be valid in ES6/ES2015
// a === 1
// b === 6
// c === 2
Run Code Online (Sandbox Code Playgroud) 让我说我有这个代码:
const {x, y} = point;
Run Code Online (Sandbox Code Playgroud)
巴别塔会把它变成:
var _point = point,
x = _point.x,
y = _point.y;
Run Code Online (Sandbox Code Playgroud)
这很好,但如果点未定义怎么办?现在我收到一个错误:
"Cannot read property 'x' of undefined".
那么我该如何避免这种情况呢?
我想做点什么
const {x, y} = {} = point;
Run Code Online (Sandbox Code Playgroud)
但这是一个语法错误.
我只能看到这是一个选项:
const {x, y} = point || {};
Run Code Online (Sandbox Code Playgroud)
哪个巴贝尔转向:
var _ref = point || {},
x = _ref.x,
y = _ref.y;
Run Code Online (Sandbox Code Playgroud)
这里我们创建一个对象只是为了避免未定义的错误.这似乎很浪费.
是否有一些我想要的语法会避免这种情况?可能会发生类似这样的事情:
var x, y;
if (typeof point !== 'undefined') {
x = point.x;
y = point.y;
}
Run Code Online (Sandbox Code Playgroud) 我正在使用es6,因此没有类装饰器.如果我有类装饰器,我会这样做:
@b
export class A {}
Run Code Online (Sandbox Code Playgroud)
这意味着b(A)将被导出为A.
但是我没有装饰器,所以我必须做这样的事情:
class A {}
export const C = b(A)
Run Code Online (Sandbox Code Playgroud)
但是现在我的模块将b(A)导出为C,但是我想将它导出为A.
有没有办法在我导出时更改名称以使其工作?
想象一下,我有一个这样的项目:
/moduleA/src...
/moduleB/src...
/mainApp/src...
Run Code Online (Sandbox Code Playgroud)
我为每个模块和主应用程序都有一个单独的webpack.config.模块是库,主应用程序导入这些库.
是否可以配置webpack-dev-server来服务这三个?
我想要避免的是每次我想要对moduleA或B进行更改时,必须停止开发服务器,重建moduleA和moduleB,然后重新启动开发服务器.
我试图在Visual Studio Code中调试用es6编写的测试,但是行编号都是错误的:断点有效,我可以单步执行代码,但突出显示的行在错误的行上.
我在Visual Studio Code中看到的代码是es6源代码而不是es5 babel配置为输出.行号似乎与我想象的es5代码看起来一致.
这是我的Visual Studio代码配置,请注意我已按照此问题中的建议将sourceMaps设置为true,将outDir设置为null,但它仍然无效:
{
"version": "0.1.0",
// List of configurations. Add new configurations or edit existing ones.
// ONLY "node" and "mono" are supported, change "type" to switch.
"configurations": [
{
// Name of configuration; appears in the launch configuration drop down menu.
"name": "Debug mocha",
// Type of configuration. Possible values: "node", "mono".
"type": "node",
// Workspace relative or absolute path to the program.
"program": "${workspaceRoot}\\node_modules\\mocha\\bin\\_mocha",
// Automatically stop program after …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用qUnit来执行一些单元测试,这需要我的Web应用程序生成的屏幕才能运行.我的想法是将我的应用程序放入嵌入qUnit测试页面的iframe中.但是这似乎不起作用(在chrome中)我似乎无法访问Web应用程序的iframe.如果我在chrome的控制台中执行此操作,我将得到未定义:
帧[ '对myApp'].文件
我认为这与某种跨域脚本安全性有关,但我的网页应用程序和我的测试页面都是从localhost提供的,因此我不明白为什么会发生这种情况,我也开始使用--disable启动Chrome -web-security参数但这还没有修复.
有没有更好的方法来进行需要我的应用程序输出的单元测试?
我正在尝试使用js api获取用户的新闻源.我不想要用户提供,但是如果他们点击facebook中的facebook徽标,他们会看到新闻源.这是将用户的Feed与其所有朋友Feed相结合的内容.这可能吗?我不想做一个查询来获取每个用户朋友的提要,然后手动将它们拼接在一起.还有另外一种方法吗?
javascript ×4
ecmascript-6 ×3
reactjs ×2
babel ×1
babeljs ×1
facebook ×1
html ×1
mocha.js ×1
qunit ×1
react-jsx ×1
source-maps ×1
unit-testing ×1
webpack ×1