【问题标题】:React native render image from cameraRoll Uri从 cameraRoll Uri 反应原生渲染图像
【发布时间】:2018-06-03 18:06:29
【问题描述】:

我拍了一张照片并用 cameraRoll 保存了它,然后我用 cameraroll uri 作为参数导航,这样我就可以在下一个视图中渲染图像,但是当下一个视图加载时没有错误,但图像没有渲染:

      componentWillMount(){

      const params = this.props.navigation.state
      console.log('Params: ')
      console.log(params.params)
      let imageURL = params.params
      this.setState({imageUri:{
          uri: imageURL
        }
      });

    }

<View style={styles.container}>     
    <Image style={{flex: 1,flexDirection:'row', alignItems:'center', justifyContent: 'center'}} source={this.state.imageUri}/>             
</View>

风格:

container:{ flex:1, justifyContent:'flex-start',alignItems:'center'},

这是来自 imageUrl 的 uri: 内容://媒体/外部/图像/媒体/21680

【问题讨论】:

    标签: react-native expo camera-roll


    【解决方案1】:

    构造函数是唯一一次您应该直接修改/初始化state (docs)。 对imageUri 的任何更改都应通过调用this.setState({imageUri: {uri: imageURL}}) 进行。

    代替

     constructor(props){
       super(props);
       const params = this.props.navigation.state
       console.log('Params: ')
       console.log(params.params)
       let imageURL = params.params
       this.setState({imageUri: {
         uri: imageURL
       }});
     }
    

    你应该有

    constructor(props){
       super(props);
       const params = this.props.navigation.state
       console.log('Params: ')
       console.log(params.params)
       let imageURL = params.params
       state = {imageUri: {
         uri: imageURL
       }};
     }
    

    【讨论】:

    • 它一直显示相同的错误,我更新代码,它没有显示错误消息,但图像它没有呈现。
    • 这可能是因为您的imageUri 是一个包装了您要访问的URI 的对象。尝试将this.state.imageUri.uri 传递到您的源属性中。
    • 尝试设置一个固定的高度和宽度,也许可以解决问题。 Note that for network and data images, you will need to manually specify the dimensions of your image! 根据docs
    猜你喜欢
    • 2018-01-25
    • 1970-01-01
    • 1970-01-01
    • 2017-06-24
    • 1970-01-01
    • 2019-06-22
    • 2018-04-08
    • 1970-01-01
    • 2017-02-10
    相关资源
    最近更新 更多