在视频 react-native-video 组件中更改 state/prop
Change state/prop in video react-native-video component
我是新手,正在尝试 react-native-video。我试图通过单击可触摸元素来更改 react-native-video 库中的道具。但我收到错误消息:
undefined is not an object (evaluating 'this.state.setState')
我确定这是一个简单的问题。我基本上只是想了解当我触摸定义的 Touchable 区域时如何启动、调用和更改道具的状态。在此示例中,我想将速率从 0.1 更改为 1。
这是我的代码:
type Props = {};
export default class App extends Component<Props> {
state = {
rate: 0.1,
};
_onPressButton() {
Alert.alert('You tapped the button!')
this.state.setState({ rate: 1 });
}
render() {
return (
<View style={styles.container}>
<Video
source={require('./assets/grid.mp4')}
ref={(ref) => {
this.player = ref
}}
onBuffer={this.onBuffer}
onError={this.videoError}
style={styles.backgroundVideo}
rate={this.state.rate}
/>
<TouchableWithoutFeedback onPress={this._onPressButton}>
<View style={styles.square1}>
<Text style={styles.welcome}>My text</Text>
</View>
</TouchableWithoutFeedback>
</View>
);
}
}
如错误所述:
undefined is not an object (evaluating 'this.state.setState')
this.state 没有名为 setState
的对象
变化:
_onPressButton() {
Alert.alert('You tapped the button!')
this.state.setState({ rate: 1 });
}
收件人:
_onPressButton() {
Alert.alert('You tapped the button!')
this.setState({ rate: 1 });
}
另外你需要改变:
<TouchableWithoutFeedback onPress={this._onPressButton}>
到
<TouchableWithoutFeedback onPress={() => this._onPressButton()}>
您没有绑定您的函数。
_onPressButton() {
Alert.alert('You tapped the button!')
this.state.setState({ rate: 1 });
}
应该是这样的箭头函数
_onPressButton = () => {
Alert.alert('You tapped the button!')
this.state.setState({ rate: 1 });
}
或者你需要做一个构造器,在里面写this._onPressButton.bind(this)
您的 onPressButton
方法未绑定到上下文,并且如上述答案所述,您需要使用 this.setState({ rate: 1 });
.
您可以添加构造函数并使用 .bind(this)
,如下所示:
constructor(props) {
super(props);
this. _onPressButton = this. _onPressButton.bind(this)
}
或者您可以使用如下所示的 auto-binding 箭头函数:
_onPressButton = () => {
Alert.alert('You tapped the button!')
this.setState({ rate: 1 });
}
我是新手,正在尝试 react-native-video。我试图通过单击可触摸元素来更改 react-native-video 库中的道具。但我收到错误消息:
undefined is not an object (evaluating 'this.state.setState')
我确定这是一个简单的问题。我基本上只是想了解当我触摸定义的 Touchable 区域时如何启动、调用和更改道具的状态。在此示例中,我想将速率从 0.1 更改为 1。
这是我的代码:
type Props = {};
export default class App extends Component<Props> {
state = {
rate: 0.1,
};
_onPressButton() {
Alert.alert('You tapped the button!')
this.state.setState({ rate: 1 });
}
render() {
return (
<View style={styles.container}>
<Video
source={require('./assets/grid.mp4')}
ref={(ref) => {
this.player = ref
}}
onBuffer={this.onBuffer}
onError={this.videoError}
style={styles.backgroundVideo}
rate={this.state.rate}
/>
<TouchableWithoutFeedback onPress={this._onPressButton}>
<View style={styles.square1}>
<Text style={styles.welcome}>My text</Text>
</View>
</TouchableWithoutFeedback>
</View>
);
}
}
如错误所述:
undefined is not an object (evaluating 'this.state.setState')
this.state 没有名为 setState
的对象变化:
_onPressButton() {
Alert.alert('You tapped the button!')
this.state.setState({ rate: 1 });
}
收件人:
_onPressButton() {
Alert.alert('You tapped the button!')
this.setState({ rate: 1 });
}
另外你需要改变:
<TouchableWithoutFeedback onPress={this._onPressButton}>
到
<TouchableWithoutFeedback onPress={() => this._onPressButton()}>
您没有绑定您的函数。
_onPressButton() {
Alert.alert('You tapped the button!')
this.state.setState({ rate: 1 });
}
应该是这样的箭头函数
_onPressButton = () => {
Alert.alert('You tapped the button!')
this.state.setState({ rate: 1 });
}
或者你需要做一个构造器,在里面写this._onPressButton.bind(this)
您的 onPressButton
方法未绑定到上下文,并且如上述答案所述,您需要使用 this.setState({ rate: 1 });
.
您可以添加构造函数并使用 .bind(this)
,如下所示:
constructor(props) {
super(props);
this. _onPressButton = this. _onPressButton.bind(this)
}
或者您可以使用如下所示的 auto-binding 箭头函数:
_onPressButton = () => {
Alert.alert('You tapped the button!')
this.setState({ rate: 1 });
}