一个"问题",我时不时地有一个对象,例如user = {}
,通过使用应用程序的过程,这将被填充.让我们说一下,在AJAX调用之后或者我这样做的事情:
user.loc = {
lat: 50,
long: 9
}
Run Code Online (Sandbox Code Playgroud)
在另一个地方,我想检查是否user.loc.lat
存在.
if (user.loc.lat) {
// do something
}
Run Code Online (Sandbox Code Playgroud)
如果它不存在,这将导致错误.如果user.loc.lat
是undefined
,user.loc
当然也是undefined
如此.
"Cannot read property 'lat' of null" - Dev Tools error
Run Code Online (Sandbox Code Playgroud)
这意味着我需要像这样检查:
if (user.loc) {
if (user.loc.lat) {
// do something
}
}
Run Code Online (Sandbox Code Playgroud)
要么
if (user.loc && user.loc.lat) {
// do something
}
Run Code Online (Sandbox Code Playgroud)
这不是很漂亮,我的对象越大越好 - 显然(想象10级嵌套).它种烧伤我,if(user.loc.lat)
不只是返回false
,如果user.loc
是undefined
也.
检查这种情况的理想方法是什么?
我已经创建了一个将由移动应用程序使用的ASP.Net WEB API项目.我需要响应json省略null属性而不是返回它们property: null
.
我怎样才能做到这一点?
我想检查多次使用this.setState时会发生什么(为讨论起见,这是2次).我认为该组件将呈现两次,但显然它只呈现一次.我的另一个期望是,对于setState的第二次调用可能会超过第一次,但你猜对了 - 工作正常.
链接到JSfiddle
var Hello = React.createClass({
render: function() {
return (
<div>
<div>Hello {this.props.name}</div>
<CheckBox />
</div>
);
}
});
var CheckBox = React.createClass({
getInitialState: function() {
return {
alex: 0
};
},
handleChange: function(event) {
this.setState({
value: event.target.value
});
this.setState({
alex: 5
});
},
render: function() {
alert('render');
return (
<div>
<label htmlFor="alex">Alex</label>
<input type="checkbox" onChange={this.handleChange} name="alex" />
<div>{this.state.alex}</div>
</div>
);
}
});
ReactDOM.render(
<Hello name="World" />,
document.getElementById('container')
);
Run Code Online (Sandbox Code Playgroud)
正如您将看到的,每次渲染都会弹出一个"渲染"警告.
你有解释为什么它正常工作?
这是iphone网站:http: //www.thevisionairegroup.com/projects/accessorizer/site/
点击"立即播放"后,您将进入游戏.枪支将滚动进入.您可以上下滚动钱包和配件.你可以看到,当你放手时它们就会突然到位.就像快照发生一样,会发生闪烁.我正在使用的唯一webkit动画是:
'-webkit-transition': 'none'
'-webkit-transition': 'all 0.2s ease-out'
'-webkit-transform': 'translate(XXpx, XXpx)'
Run Code Online (Sandbox Code Playgroud)
我根据是否要让它进行动画选择第一个或第二个过渡,并且变换是我移动物体的唯一方式.
但最大的问题是当您点击"匹配项目",然后点击"再次播放".你会看到枪支的动画效果,配件/钱包的整个背景都会变白.有人可以请你透露一些洞察力,为什么会发生这种情况?
componentDidMount(prevProps, prevState, prevContext) {
let [audioNode, songLen] = [this.refs.audio, List.length-1];
audioNode.addEventListener('ended', () => {
this._endedPlay(songLen, () => {
this._currSong(this.state.songIndex);
this._Play(audioNode);
});
});
audioNode.addEventListener('timeupdate', () => {
let [remainTime, remainTimeMin, remainTimeSec, remainTimeInfo] = [];
if(!isNaN(audioNode.duration)) {
remainTime = audioNode.duration - audioNode.currentTime;
remainTimeMin = parseInt(remainTime/60); // ???
remainTimeSec = parseInt(remainTime%60); // ???
if(remainTimeSec < 10) {
remainTimeSec = '0'+remainTimeSec;
}
remainTimeInfo = remainTimeMin + ':' + remainTimeSec;
this.setState({'time': remainTimeInfo});
}
});
}
componentWillUnmount () {
let audio = this.refs.audio;
audio.removeEventListener('timeupdate');
audio.removeEventListener('ended');
} …
Run Code Online (Sandbox Code Playgroud) 我正在使用一个使用不正确的JSON格式的服务(属性周围没有双引号).所以我需要发送
{ name: "John Smith" }
代替 { "name": "John Smith" }
此格式无法更改,因为这不是我的服务.
有人知道如上所述格式化JavaScript对象的字符串化路由吗?
数字字符串'5'
var num_str = '5';
Run Code Online (Sandbox Code Playgroud)
如何解析Int并让下面的答案同时正确?
{{num_str + 1}} // 6
{{num_str - 1}} // 4
Run Code Online (Sandbox Code Playgroud)
parseInt不能在Angular表达式中使用,
{{parseInt(num_str) - 1}}
Run Code Online (Sandbox Code Playgroud)
数字过滤器不能做加减,
{{num_str - 1 | number}}
Run Code Online (Sandbox Code Playgroud)
如果有人有有用的建议,我将非常感谢你
我正在使用ReactJS,我的应用程序的一部分需要相当印刷的JSON.
我得到一些JSON,如:{ "foo": 1, "bar": 2 }
,如果我JSON.stringify(obj, null, 4)
在浏览器控制台中运行它,它很漂亮,但是当我在这个反应片段中使用它时:
render: function() {
var json = this.getStateFromFlux().json;
return (
<div>
<JsonSubmitter onSubmit={this.onSubmit} />
{ JSON.stringify(json, null, 2) }
</div>
);
},
Run Code Online (Sandbox Code Playgroud)
它呈现看起来像JSON "{ \"foo\" : 2, \"bar\": 2}\n"
.
如何正确解释这些字符?{
我试图模拟console.warn /错误,但我不能.我使用第三方库,在其中调用console.warn.我需要测试它被称为或不被称为.在我的测试用例中,我试图存根控制台.但它没有帮助.在那之后,我试图手动模拟控制台,它也没有成功.
console.warn = jest.fn();
testSchema('/app/components/Users/UserItem/UserItemContainer.js');
expect(console.warn).toBeCalled();
Run Code Online (Sandbox Code Playgroud)
没用
console.warn = jest.fn();
testSchema('/app/components/Users/UserItem/UserItemContainer.js');
console.warn('error');
expect(console.warn).toBeCalled();
Run Code Online (Sandbox Code Playgroud)
做得好.但我仍然console.warn node_modules/babel-relay-plugin/lib/getBabelRelayPlugin.js:138
在终端看到.谁能帮我?
当我使用React Native开发混合应用程序时.当我从React Native代码创建Android-App时,我编写的JavaScript代码是否会转换为Dalvik/ART Runtime的Java-Code或Java-Bytecode?或者只是编译为本机UI组件的UI组件?或者像Fetch API这样的库是否将JavaScript代码编译成Java-Code或Java-Bytecode?