我正在调查维护跨平台(web,ios,android)phonegap代码库所涉及的复杂性,该代码库允许尽可能简单地使用平台特定代码(和资产/测试).
我目前采用的最佳方法是使用grunt构建典型Web应用程序的代码,然后使用grunt-phonegap模块生成相应的phonegap项目.
我相信这会有效,但是对于我的phonegap项目,我知道我将需要使用一些专门编写的插件来利用一些设备功能(这些不是典型的cordova插件)
我想知道是否有人想出了一种方法来维护一个能够适应不同平台和要求的代码库.Javascript没有#IF_DEF功能,但是可以使用grunt实现类似的功能吗?
我对ReactJS很陌生,我很难理解不同的组件如何相互通信.
我有一个组件将呈现一个列表,每个列表项是一个不同的组件.我想保持组件尽可能小.
现在,每个列表项都可以具有一个名为property的属性active,如果该属性设置为true,则会添加一个附加类.
这是在组件中定义单个项的类.
请参阅以下代码,以了解定义单个列表项的组件:
export default class OfficeRibbonTab extends React.Component {
constructor(props) {
super(props);
this.state = {
active: props.active ? props.active : false
}
// Assign all the correct event handlers.
this.setActive = this.setActive.bind(this);
}
setActive() {
this.setState({active: true});
}
render() {
// When the tab is defined as active, add the "active" class on it.
if (this.state.active)
{ var tabClassName = "active"; }
return <li onClick={this.setActive} className={tabClassName}>{this.props.tabName}</li>;
}
}
Run Code Online (Sandbox Code Playgroud)
所以,我有active传递给这个组件的propery ,我存储在组件状态中.当我单击列表项时,我将当前项的状态设置为活动状态.问题是我希望所有其他列表项变为非活动状态,从而将active的状态设置为false.
下面的代码是我的列表的概述:
export default …Run Code Online (Sandbox Code Playgroud)