javascript - React-Native 改变 <Image/> 来源与状态

标签 javascript reactjs react-native

我正在尝试创建一个 React 组件,该组件在按下时在黑色和白色之间切换 Logo 。我想在以后的组件中加入更多功能,但 changeLogo() console.log 甚至不会显示在调试器中。

感谢任何帮助/提示!

native react :0.39.2 react :^15.4.2

import React, { Component } from 'react';
import { View, Image } from 'react-native';

export default class TestButton extends Component {
  constructor(props) {
    super(props);
    this.state = { uri: require('./icons/logo_white.png') }
  }

  changeLogo() {
    console.log('state changed!');
    this.setState({
      uri: require('./icons/logo_black.png')
    });
  }

  render() {
    return (
      <View
        style={styles.container}
      >
        <Image
          source={this.state.uri}
          style={styles.logoStyle}
          onPress={this.changeLogo}
        />
      </View>
    );
  }
}

const styles = {
  container: {
    flex: 1,
    justifyContent: 'center',
    alignItems: 'center',
    backgroundColor: 'blue',
  },
  logoStyle: {
    width: 200,
    height: 200,
    marginLeft: 10,
    marginRight: 5,
    alignSelf: 'center',
  },
};

最佳答案

onPress Prop 不适用于 Image成分。你需要用 TouchableHighlight 包裹它像这样的组件:

import { View, Image, TouchableHighlight } from 'react-native';

...

<TouchableHighlight onPress={() => this.changeLogo()}>
  <Image
    source={this.state.uri}
    style={styles.logoStyle}
  />
</TouchableHighlight> 

关于javascript - React-Native 改变 <Image/> 来源与状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41668331/

相关文章:

javascript - 将状态从子类传递给父类

javascript - AJAX POST 请求中的 HTTP 错误 400

javascript - 聚焦时如何使用 Reactjs 选择输入中的所有文本?

reactjs - 如何在 native react 中使用高度自动?

node.js - React - 仅在 HTTPS 上发送 POST 请求时出现网络错误

javascript - firebase firestore离线持久性FirebaseError

javascript - 在 React Native Redux 中渲染之前调度一个 Action ?

javascript - 如何使用 React Native 项目中的普通 JS 文件?

javascript - AngularJS : Factory and Service?

javascript - DOJO 未定义错误