nuke-touchable
Version:
可点击容器
104 lines (96 loc) • 2.09 kB
Markdown
# Touchable 可点击容器
* order: 0
- title_en: Clickable container
可点击容器
---
```js
<NukePlayGround>
<Touchable
rippleEnabled={true}
style={styles.touch}
activeStyle={styles.touchActive}
onPress={this.pressX.bind(this)}
>
<Text style={styles.touchText}>click me</Text>
</Touchable>
</NukePlayGround>
```
---
```js
/** @jsx createElement */
import { createElement, Component, render } from 'rax';
import View from 'nuke-view';
import Text from 'nuke-text';
import Touchable from 'nuke-touchable';
import Page from 'nuke-page';
function lineGradient(direction, start, end) {
return {
backgroundImage: `linear-gradient(to ${direction},${start},${end})`
};
}
class App extends Component {
constructor() {
super();
this.state = {
count: 0
};
}
pressX = e => {
this.setState({
count: this.state.count + 1
});
};
render() {
return (
<Page title="Touchable">
<Page.Intro main="Normal" />
<View style={styles.result}>
{this.state.count ? (
<Text style={styles.resultText}>点击 {this.state.count} 次</Text>
) : null}
</View>
<View style={styles.btns}>
<Touchable
rippleEnabled={true}
style={styles.touch}
activeStyle={styles.touchActive}
onPress={this.pressX.bind(this)}
>
<Text style={styles.touchText}>click me</Text>
</Touchable>
</View>
</Page>
);
}
}
const styles = {
result: {
height: '480rem',
margin: '30rem',
padding: '10rem',
backgroundColor: '#ffffff',
justifyContent: 'center',
alignItems: 'center'
},
resultText: {
fontSize: '28rem'
},
btns: {
margin: '30rem'
},
touch: {
...lineGradient('right', '#a1c4fd', '#c2e9fb'),
height: 88,
justifyContent: 'center',
alignItems: 'center'
},
touchText: {
color: '#0B2E68',
fontSize: 28
},
touchActive: {
...lineGradient('right', '#8BB6F9', '#ACE2FB')
}
};
render(<App />);
```