Вопрос:

условный оператор в исходном изображении реакции

reactjs react-native

11 просмотра

1 ответ

4 Репутация автора

"react": "16.8.3",
"react-native": "0.59.5",

Я хочу использовать локальные изображения и URI, когда я хочу, я написал компонент, чтобы сделать это для меня в соответствии с реквизитами, отправленными ему. но кажется, что условный оператор не работает в реагирующем собственном изображении или требует, чтобы не работал с динамическими строками.

const CustomImage = ({ img, url, size, rounded, style, onClick }) => {
    alert('imageeeeeeeeeeee', typeof (img));
    let REQURE_STATEMENT= null;
    if (img !== null) {
        REQURE_STATEMENT= require('./../src/assets/images/close.png');
    }
    return (
        <TouchableOpacity activeOpacity={0.85} onPress={()=> onClick() }>
            <Image
                source={url === null ? REQURE_STATEMENT: { uri: url }}
                style={{ width, height, borderRadius: rounded, backgroundColor: 'red', ...(style) }}
                onPress={() => console.log('clickkkkkkkkkkkkkkkkkkkkkkkkkk')}
            />
        </TouchableOpacity>

    );
};

я даже пытался

let path= `./../path/${imageName}`
 <Image source={url === null ? require(path): { uri: url }}/>

но это терпит неудачу с этой ошибкой:

why not support error: bundling failed: Error: error: bundling failed: Error: components\common\CustomImage.js:Invalid call at line 42: require(image)
    at C:\Users\ui4\Desktop\react-git\mbz-mobile-app\node_modules\metro\src\JSTransformer\worker.js:317:19
    at Generator.next (<anonymous>)
    at asyncGeneratorStep (C:\Users\ui4\Desktop\react-git\mbz-mobile-app\node_modules\metro\src\JSTransformer\worker.js:75:24)
    at _next (C:\Users\ui4\Desktop\react-git\mbz-mobile-app\node_modules\metro\src\JSTransformer\worker.js:95:9)
Автор: Gray Источник Размещён: 11.08.2019 07:27

Ответы (1)


0 плюса

397 Репутация автора

Вы можете сделать это вне Imageкомпонента, как это:

const CustomImage = ({ img, url, size, rounded, style, onClick }) => {
    alert('imageeeeeeeeeeee', typeof (img));
    let REQURE_STATEMENT= null;
    if (img !== null) {
        REQURE_STATEMENT= require('./../src/assets/images/close.png');
    }
    return (
        <TouchableOpacity activeOpacity={0.85} onPress={()=> onClick() }>
            {url === null ? (
            <Image
                source={REQURE_STATEMENT}
                style={{ width, height, borderRadius: rounded, backgroundColor: 'red', ...(style) }}
                onPress={() => console.log('clickkkkkkkkkkkkkkkkkkkkkkkkkk')}
            />
            ) : (
            <Image
                source={{ uri: url }}
                style={{ width, height, borderRadius: rounded, backgroundColor: 'red', ...(style) }}
                onPress={() => console.log('clickkkkkkkkkkkkkkkkkkkkkkkkkk')}
            />
            )}
        </TouchableOpacity>

    );
};
Автор: kenmistry Размещён: 11.08.2019 07:47
Вопросы из категории :
32x32