this.props.keyword || '' ,不太理解 || 的原因

来源:9-5 SearchHeader组件

horistardust

2017-12-06

class SearchHeader extends React.Component {
    constructor(props, context) {
    super(props, context);
    this.shouldComponentUpdate = PureRenderMixin.shouldComponentUpdate.bind(this);
}
render() {
    return (
    <div id="search-header" className="clear-fix">
    <span className="back-icon float-left" onClick={this.clickHandle.bind(this)}>
    <i className="icon-chevron-left"></i>
    </span>
    <div className="input-container">
    <i className="icon-search"></i>
    &nbsp;
    <SearchInput value={this.props.keyword || ''} enterHandle={this.enterHandle.bind(this)}/>
    </div>
    </div>
    )
}
clickHandle() {
    window.history.back()
}
enterHandle(value) {
    hashHistory.push('/search/all/' + encodeURIComponent(value))
}
}

老师的代码里写了 this.props.keyword || ''  ,看起来是为了防止keyword不存在的情况,就是不知道keyword什么情况下会不存在。

keyword这个参数是来自于router组件吧,this.props.params拿到的,那么如果input里没有输入值就直接回车,通过this.props.params拿到的keyword这个键值对或许就不存在了,还是说是存在的,只是值变成了' '呢(我看父组件里又是直接传的params.keyword,又好像是存在的)?

要是存在,this.props.keyword || '' 的意义何在呢?还是说只是和bind(this)一样要养成习惯?



写回答

2回答

双越

2017-12-06

这个只是防止异常情况,可能是我写代码的时候的一种条件反射,遇到这种情况直接加上了 || '' ,没有太仔细考虑 this.props.keyword 是不是真的会不存在。

但是,无论 this.props.keyword 是否真的不存在,加上 || '' 都是没问题,而且保持这种随时识别风险意识也是很重要的

0
0

horistardust

提问者

2017-12-06

{category: "all", keyword: undefined}

category:"all"

keyword:undefined

__proto__:Object

懂了,自己打印了一下keyword是undefined

0
1
双越
对,万一页面显示 undefined 那可就惨了
2017-12-06
共1条回复

React高级实战 打造大众点评Web App

已经对React Router4与Webpack2进行了项目升级

1711 学习 · 707 问题

查看课程