์ํ๋ฅผ ๋ณ๊ฒฝํ์ฌ ๋ณด๊ธฐ ์คํ์ผ์ ๋ณ๊ฒฝํ๋ ค๊ณ ํ ๋. ์๋ตํ์ง ์์ต๋๋ค. ์ด์ ๊ฐ ๋ญ์ง ์์ธ์?
var React = require('react-native');
var { View, Text} = React;
var TouchIt = React.createClass({
getInitialState() {
return {
style: style
}
},
shouldSetResponder() {
return true;
},
shouldSetMoveResponder() {
return true;
},
responderGrant() {
console.log('finger in');
},
responderMove() {
var style = this.state.style;
style.backgroundColor = this.getRandomColor();
this.setState({backgroundColor: backgroundColor});
},
responderRelease() {
console.log('finger out');
},
getRandomColor() {
var randomColor = '#'+Math.random().toString(16).substr(-6);
return randomColor;
},
render() {
return (
<View style={this.state.style}
onStartShouldSetResponder={this.shouldSetResponder}
onMoveShouldSetResponder={this.shouldSetMoveResponder}
onResponderGrant={this.responderGrant}
onResponderMove={this.responderMove}
onResponderRelease={this.responderRelease}
>
<Text>{this.style.backgroundColor}</Text>
</View>
);
}
});
var style = {
backgroundColor: 'rgb(11, 135, 91)',
flex: 1
}
module.exports = TouchIt;
์ด๊ฒ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ง ํ์คํ์ง ์์ง๋ง responderMove์ ์ฒซ ๋ฒ์งธ ์ค์ var style = {...this.state.style};
ํ์ฌ ์ ๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ณ ๋ ๋ฒ์งธ ๋ ๋ ํจ์ค์ ์ View๊ฐ ์ฒซ ๋ฒ์งธ ๊ฒ๊ณผ ๋ค๋ฅธ ์คํ์ผ์์ ๋ถ๋ช
ํ ํ์ญ์์ค. .
๋ด๊ฐ ํ ์คํธํ์ง ์์๊ธฐ ๋๋ฌธ์ 100% ํ์ ํ ์๋ ์์ง๋ง "var ์คํ์ผ"์ ํ๋์ "this.state"์ ํ๋์ backgroundColors๊ฐ ์๋ ๊ฒ ๊ฐ์ผ๋ฉฐ ๊ทธ๊ฒ๋ค์ ์๊ณ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. backgroundColor๋ฅผ ์ฌ๊ธฐ์ ์ ์ฅํ ์ง ์๋๋ฉด ๊ฑฐ๊ธฐ์ ์ ์ฅํ ์ง ๊ฒฐ์ ํ๊ณ ๊ฐ๊ฐ responderMove ๋ฉ์๋์์ ์ฌ๋ฐ๋ฅธ ๊ฐ์ ์ค์ ํด์ผ ํฉ๋๋ค.
์!
var React = require('react-native');
var {
AppRegistry,
Image,
ScrollView,
StyleSheet,
Text,
View,
} = React;
var ExampleApp = React.createClass({
getInitialState() {
return {
style: style
}
},
shouldSetResponder() {
return true;
},
shouldSetMoveResponder() {
return true;
},
responderGrant() {
console.log('finger in');
},
responderMove() {
var backgroundColor = this.getRandomColor();
this.setState({style: {backgroundColor}});
},
responderRelease() {
console.log('finger out');
},
getRandomColor() {
var randomColor = '#'+Math.random().toString(16).substr(-6);
return randomColor;
},
render() {
return (
<View style={[{flex: 1}, this.state.style]}
onStartShouldSetResponder={this.shouldSetResponder}
onMoveShouldSetResponder={this.shouldSetMoveResponder}
onResponderGrant={this.responderGrant}
onResponderMove={this.responderMove}
onResponderRelease={this.responderRelease}
>
<Text>{this.state.style.backgroundColor}</Text>
</View>
);
}
});
var style = {
backgroundColor: 'rgb(11, 135, 91)',
flex: 1
}
๋ณ์์ ๋ํ ๋ง์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ์์ ์ฝ๋๋ฅผ ํ์ธํ์ฌ ์ด๋๊ฐ ์๋ชป๋์๋์ง ํ์ธํ์ธ์ :) ๊ทธ๋ฐ๋ฐ ์ด๋ฐ ์ข ๋ฅ์ ์ง๋ฌธ์ StackOverflow์ ๋ ์ ํฉํฉ๋๋ค!
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ด๊ฒ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ง ํ์คํ์ง ์์ง๋ง responderMove์ ์ฒซ ๋ฒ์งธ ์ค์
var style = {...this.state.style};
ํ์ฌ ์ ๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ณ ๋ ๋ฒ์งธ ๋ ๋ ํจ์ค์ ์ View๊ฐ ์ฒซ ๋ฒ์งธ ๊ฒ๊ณผ ๋ค๋ฅธ ์คํ์ผ์์ ๋ถ๋ช ํ ํ์ญ์์ค. .