小编tan*_*y_k的帖子

JavaScript,优雅的方法来检查NULL/undefined的嵌套对象属性

一个"问题",我时不时地有一个对象,例如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.latundefined,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.locundefined也.

检查这种情况的理想方法是什么?

javascript object javascript-objects

96
推荐指数
4
解决办法
6万
查看次数

在ASP.NET Web API上抑制具有null值的属性

我已经创建了一个将由移动应用程序使用的ASP.Net WEB API项目.我需要响应json省略null属性而不是返回它们property: null.

我怎样才能做到这一点?

asp.net-web-api

85
推荐指数
5
解决办法
4万
查看次数

在React组件中多次使用this.setState会发生什么?

我想检查多次使用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)

正如您将看到的,每次渲染都会弹出一个"渲染"警告.

你有解释为什么它正常工作?

javascript reactjs

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

iPhone WebKit CSS动画导致闪烁

这是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)

我根据是否要让它进行动画选择第一个或第二个过渡,并且变换是我移动物体的唯一方式.

但最大的问题是当您点击"匹配项目",然后点击"再次播放".你会看到枪支的动画效果,配件/钱包的整个背景都会变白.有人可以请你透露一些洞察力,为什么会发生这种情况?

css iphone animation webkit flicker

81
推荐指数
6
解决办法
8万
查看次数

setState(...):只能更新已安装或安装的组件.这通常意味着您在已卸载的组件上调用了setState().这是一个无操作

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)

reactjs

77
推荐指数
4
解决办法
10万
查看次数

JSON.stringify属性没有引号?

我正在使用一个使用不正确的JSON格式的服务(属性周围没有双引号).所以我需要发送

{ name: "John Smith" } 代替 { "name": "John Smith" }

此格式无法更改,因为这不是我的服务.

有人知道如上所述格式化JavaScript对象的字符串化路由吗?

javascript json

74
推荐指数
7
解决办法
7万
查看次数

如何在Angular表达式中将String解析为Int?

数字字符串'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)

如果有人有有用的建议,我将非常感谢你

javascript angularjs

73
推荐指数
7
解决办法
23万
查看次数

漂亮的印刷JSON与反应

我正在使用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".

如何正确解释这些字符?{

javascript json flux reactjs

68
推荐指数
5
解决办法
9万
查看次数

笑话.如何在第三方库使用时模拟控制台?

我试图模拟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在终端看到.谁能帮我?

javascript tdd unit-testing jestjs

52
推荐指数
3
解决办法
2万
查看次数

React Native是否将JavaScript编译为Java for Android?

当我使用React Native开发混合应用程序时.当我从React Native代码创建Android-App时,我编写的JavaScript代码是否会转换为Dalvik/ART Runtime的Java-Code或Java-Bytecode?或者只是编译为本机UI组件的UI组件?或者像Fetch API这样的库是否将JavaScript代码编译成Java-Code或Java-Bytecode?

javascript java android react-native react-native-android

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