weex-nuke
Version:
基于 Rax 、Weex 的高性能组件体系 ~~
152 lines (144 loc) • 3.81 kB
Markdown
# Switch 包含受控、非受控 2 种用法,请注意区别
- order: 0
- title_en: Contains controlled and uncontrolled, please note the difference
包含受控、非受控 2 种用法,请注意区别。
---
```js
<NukePlayGround>
// 非受控用法
<Switch
key="switch3"
defaultChecked={true}
onValueChange={(value) => this.changeNotice('switch3', value)}
/>
// 受控用法
<View style={styles.cellItem}>
<Switch
key="switch4"
defaultChecked={false}
onValueChange={(value) => this.changeNotice('switch4', value)}
/>
<View style={styles.cellResult}>
<Text style={styles.label}>switch4 返回: </Text>
<Text style={styles.text}>{this.state.switch4}</Text>
</View>
</View>
</NukePlayGround>
```
---
```js
import { createElement, Component, render } from 'rax';
import Text from 'nuke-text';
import View from 'nuke-view';
import Page from 'nuke-page';
import Switch from 'nuke-switch';
import ThemeProvider from 'nuke-theme-provider';
const { StyleProvider } = ThemeProvider;
let md = {
Core: {
[`color-brand1-6`]: '#1A9CB7'
},
Switch: {}
};
let App = class NukeDemoIndex extends Component {
constructor() {
super();
this.state = {
switch1: true,
switch2: false,
switch3: null,
switch4: null
};
}
change = (item, value) => {
let obj = {};
obj[item] = value;
this.setState(obj);
};
changeNotice = (item, value) => {
let obj = {};
obj[item] = value;
this.setState(obj);
};
render() {
return (
<StyleProvider style={md} androidConfigs={{ materialDesign: true }}>
<Page title="Switch">
<Page.Intro main="非受控,组件checked 状态更新后,返回结果" />
<View style={styles.row}>
<View style={styles.cellItem}>
<Switch
key="switch3"
defaultChecked={true}
onValueChange={(value) => this.changeNotice('switch3', value)}
/>
<View style={styles.cellResult}>
<Text style={styles.label}>switch3 返回: </Text>
<Text style={styles.text}>{this.state.switch3}</Text>
</View>
</View>
<View style={styles.cellItem}>
<Switch
key="switch4"
defaultChecked={false}
onValueChange={(value) => this.changeNotice('switch4', value)}
/>
<View style={styles.cellResult}>
<Text style={styles.label}>switch4 返回: </Text>
<Text style={styles.text}>{this.state.switch4}</Text>
</View>
</View>
</View>
<Page.Intro main="disabled" />
<View style={styles.row}>
<View style={styles.cellItem}>
<Switch disabled checked={true} />
</View>
<View style={styles.cellItem}>
<Switch disabled />
</View>
</View>
<Page.Intro main="222222" />
<View style={styles.row}>
<Switch
key="switch6"
defaultChecked={false}
onValueChange={(value) => this.changeNotice('switch6', value)}
/>
</View>
</Page>
</StyleProvider>
);
}
};
const styles = {
row: {
width: 200,
height: 100,
backgroundColor: '#fff333',
flexDirection: 'row'
},
// row: {
// flexDirection: 'row',
// paddingLeft: 40,
// marginBottom: 30
// },
cellItem: {
flex: 1,
height: 240
},
cellResult: {
flexDirection: 'row'
},
text: {
marginTop: 20,
fontSize: 24
},
label: {
marginTop: 20,
fontSize: 24,
color: '#999999'
}
};
render(<App />);
```