【问题标题】:React native onPress = change source code of imageReact native onPress = 更改图像的源代码
【发布时间】:2021-12-15 11:30:21
【问题描述】:

我在另一个文件中有一个对象数组,我将其映射到 2 个文件中 怎么做:react-native 中的 e.target.src 因为在 react-native 中我们没有 e

//存储文件:

export default [
        {
            liked: false,
        },
        { 
            liked: false,
        },
        {
            liked: false,
        },
        {
            liked: false,
        },
        
]

// 2 个文件

import images from 'store.js'

function unlike (){
// in react will be """ e.target.src = '../assets/unliked.png'  """  but how in react-native ?
}
function like (){
    // in react will be """ e.target.src = '../assets/liked.png' """ but how in react-native ?
}
return(
    <ScrollView>
                {images.map(image => {
                    return({image.liked ? <Image onPress={unlike} source={require('../assets/liked.png')} /> : <Image onPress={unlike} source={require('../assets/unliked.png')} />
              </ScrollView >
)

【问题讨论】:

    标签: javascript react-native jsx


    【解决方案1】:

    您可以预先导入两个图像并根据liked动态设置图像源。要在每个喜欢或不喜欢的地方重新渲染 UI,请使用状态:

    import images from 'store.js'
    import React, { useState, useEffect } from 'react';
    // other imports
    
    const liked = require('../assets/liked.png')
    const disliked = require('../assets/unliked.png')
    
    
    const LikesComponent = (props) => {
      const [likesState, setLikesState] = useState(images)
    
      const handleLikes = (index) => {
        let temp = [...likesState]
        temp[index].liked = !temp[index].liked
    
        setLikesState(temp)
      }
    
      return(
        <ScrollView>
           {
           likesState.map((image, index) => <Image key={index} 
                                                   source={image.liked ? liked : disliked} 
                                                   onPress={() => handleLikes(index)} />
           }
        </ScrollView>
      )
    }
    
    export default LikesComponent
    

    【讨论】:

    • 问题出在handleLikes函数中,我需要在那里写什么来改变src
    • 如果我写在handleLikes > image.liked = true ,,它不会改变源
    • 你能在handleLikes函数中写给我吗 - // 喜欢和不喜欢这里的逻辑
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-12
    • 2018-07-30
    • 1970-01-01
    • 1970-01-01
    • 2020-06-10
    • 2021-06-01
    相关资源
    最近更新 更多