Require with prop 不起作用。 “无效呼叫..”

问题描述 投票:0回答:2

我不明白为什么这段代码不起作用。

const UserCard = props => {
    return (
      <View style={styles.card}>
          <View style={{flex: 0.33}}>
            <Image source={require(props.user.image)} style={{width: 100, height: 100}}/>
          </View>
          <View style={{flex: 0.66}}>
            <Text>bb</Text>
          </View>
      </View>
    );
}

const styles = StyleSheet.create({
  card: {
    flexDirection: 'row',
    backgroundColor: 'green'
  },
});


export default UserCard;

props.user.image = '资产/测试/joan.jpg'

如果我输入图像:

<Image source={require('Assets/test/joan.jpg')} style={{width: 100, height: 100}}/>

这是作品。

在资产中,我有名为 Assets 的 package.json,因此我可以使用绝对路径。

我测试了各种选项,但没有一个。

例如:

return (
   const user_image = require(props.user.image);
   ... 
      <Image source={user_image} style={{width: 100, height: 100}}/>
   ...

其他:

return (
   const user_image = props.user.image;
   ... 
      <Image source={require(user_image)} style={{width: 100, height: 100}}/>
   ...

或者用 src 而不是 source,但它不起作用...

我还测试了它的改变

const UserCard = props => {

对于

class UserCard extends React.Component {

还是一样...

请帮忙。

编辑:

带有对象用户的主屏幕

const users = [
      {
        "image" : "Assets/test/fernando.jpg",
        "name" : "Fernando",
        "description" : "General Manager",
      },
      {
        "image" : "Assets/test/daniel.jpg",
        "name" : "Daniel",
        "description" : "CEO",
      },
      {
        "image" : "Assets/test/joan.jpg",
        "name" : "Joan",
        "description" : "Manager",
      },
    ];

class HomeScreen extends React.Component {
   ...
   render() {
       return (
         <SafeAreaView style={styles.container}>
           <ScrollView
             style={styles.container}
             contentContainerStyle={styles.contentContainer}>
             { typeof users === 'object' && users.length > 0 && (users.map((user, index) => {
              return (
                  <View key={index} style={{flex: 1, backgroundColor: 'red'}}>
                    <UserCard user={user} />
                  </View>
              )})
            ) }  
           </ScrollView>
         </SafeAreaView>
       );
     }
javascript image react-native require
2个回答
0
投票

所以今天我遇到了这个问题 我的解决方案不是像这样将路径传递给需求

<Image source={require(props.user.image)} />

我是这样通过的

<Image source={props.user.image} />

我发送了需要这样的数据

const users = [
      {
        "image" : require("Assets/test/fernando.jpg"),
        "name" : "Fernando",
        "description" : "General Manager",
      },

就像魅力一样。


0
投票

这可以是其他解决方案。不要将图像路径从父组件发送到子组件。像这样发送图像本身:

<UserCard user={user} image={require('Assets/test/daniel.jpg')} />

并直接在子组件中使用它:

<Image source={props.image} style={{width: 100, height: 100}}/>
© www.soinside.com 2019 - 2024. All rights reserved.