weex-nuke
Version:
基于 Rax 、Weex 的高性能组件体系 ~~
187 lines (174 loc) • 5.14 kB
Markdown
#Checkbox 使用
- order: 0
- title_en: Checkbox usage
---
```js
<NukePlayGround>
// uncontrolled
<Checkbox defaultChecked={true} onChange={doSomeThing} />
// controlled
<Checkbox checked={State} onChange={doSomeThingAndChangeState} />
</NukePlayGround>
```
---
```js
/** @jsx createElement */
import { createElement, Component, render } from 'rax';
import View from 'nuke-view';
import Text from 'nuke-text';
import Checkbox from 'nuke-checkbox';
import Page from 'nuke-page';
import ThemeProvider from 'nuke-theme-provider';
const { StyleProvider } = ThemeProvider;
let ThemeStyle = {
Checkbox: {
'small-border-radius': '10%',
'normal-bg-color': '#ffffff',
'normal-bg-color-selected': '#DD4811',
'normal-border-color-selected': '#DD4811',
'empty-border-color': '#C3C5CD',
'empty-border-color-selected': '#5688D8'
}
};
const themeOrange = '#ff6600';
let App = class NukeDemoIndex extends Component {
constructor() {
super();
this.state = {
checked: true
};
}
onChange(value) {
console.log(value);
}
changeControl(value) {
console.log(value);
this.setState({
checked: value
});
}
render() {
return (
<Page title="Checkbox">
<Page.Intro sub="普通样式" />
<View style={styles.demo_item}>
<View style={styles.group_item}>
<Checkbox defaultChecked={true} size="small" onChange={this.onChange.bind(this)} />
<Text>苹果</Text>
</View>
<View style={styles.group_item}>
<Checkbox size="small" onChange={this.onChange.bind(this)} />
<Text>梨</Text>
</View>
</View>
<Page.Intro sub="空心样式" />
<View style={styles.demo_item}>
<View style={styles.group_item}>
<Checkbox defaultChecked={true} type="empty" size="small" onChange={this.onChange.bind(this)} />
<Text>苹果</Text>
</View>
<View style={styles.group_item}>
<Checkbox size="small" type="empty" onChange={this.onChange.bind(this)} />
<Text>梨</Text>
</View>
</View>
<Page.Intro sub="list 样式" />
<View style={[styles.demo_item, { flexDirection: 'column' }]}>
<View style={styles.group_item}>
<Checkbox defaultChecked={true} type="list" size="small" onChange={this.onChange.bind(this)} />
<Text>浙江省杭州市余杭区</Text>
</View>
<View style={styles.group_item}>
<Checkbox size="small" type="list" onChange={this.onChange.bind(this)} />
<Text>浙江省杭州市临安市</Text>
</View>
</View>
<Page.Intro main="自定义大小颜色" />
<View style={styles.demo_item}>
<Checkbox
style={{
width: '30rem',
height: '30rem',
fontSize: '20rem'
}}
defaultChecked={true}
size="small"
checkedStyle={{
borderColor: themeOrange,
backgroundColor: themeOrange
}}
unCheckedStyle={{ backgroundColor: themeOrange }}
onChange={this.onChange.bind(this)}
/>
<Checkbox
defaultChecked={true}
size="small"
type="empty"
checkedStyle={{
borderColor: themeOrange,
color: themeOrange
}}
unCheckedStyle={{ borderColor: themeOrange }}
onChange={this.onChange.bind(this)}
/>
<Checkbox
defaultChecked={true}
size="small"
type="list"
checkedStyle={{ color: themeOrange }}
onChange={this.onChange.bind(this)}
/>
</View>
<Page.Intro main="使用theme替换" />
<StyleProvider style={ThemeStyle}>
<View style={styles.demo_item}>
<Checkbox
style={{
width: '30rem',
height: '30rem',
fontSize: '20rem'
}}
checked={this.state.checked}
size="small"
onChange={this.changeControl.bind(this)}
/>
<Checkbox
checked={this.state.checked}
disabled
size="small"
type="empty"
onChange={this.onChange.bind(this)}
/>
<Checkbox
checked={false}
size="small"
type="list"
onChange={this.onChange.bind(this)}
touchStyle={{ width: 100 }}
/>
</View>
</StyleProvider>
</Page>
);
}
};
const styles = {
demo_item: {
width: 750,
marginTop: 30,
backgroundColor: '#ffffff',
flexDirection: 'row',
alignItem: 'center',
paddingLeft: 12
},
group_item: {
height: 104,
flexDirection: 'row',
borderBottomWidth: '2rem',
borderBottomStyle: 'solid',
borderBottomColor: '#F7F8FA',
alignItems: 'center'
}
};
render(<App />);
```