Я хочу отобразить изображение и соответствующий текст из объекта, выбранного случайным образом из массива.
По сути, я планирую использовать эту цепочку, чтобы получить как имя, так и изображение: ингридиент <- ингридиентArray <- getRandomIngredient <- getIngredientImage (& getIngredientName) </p>
Я уверен, что есть кое-что базовое, что я просто не понимаю в объектно-ориентированном программировании, но не могу заставить его работать.
ингридиентArray:
const ingredient1 = new Ingredient("green salad", require('./app/components/img/base/green_salad.jpg'));
const ingredient2 = new Ingredient("mixed salad", require('./app/components/img/base/mixed_salad.jpg'));
var ingredientArray = ["ingredient1", "ingredient2"]
getRandomIngredient:
function getRandomIngredient (arr){
if (arr && arr.length) {
return arr[Math.floor(Math.random() * arr.length)];
}
}
class Ingredient:
function Ingredient (ingredientName, ingredientImage){
this.ingredientName = ingredientName;
this.ingredientImage = ingredientImage;
Ingredient.prototype.getIngredientName = function(){
return this.ingredientName;
}
Ingredient.prototype.getIngredientImage = function(){
return this.ingredientImage;
}
}
Что я хотел бы сделать:
<Image source = {getRandomIngredient(ingredientArray).getIngredientImage()}
Но я получаю следующее сообщение об ошибке:
TypeError: getRandomIngredient(...).getIngredientImage is not a function
Если я вызываю функцию getIngredientImage () напрямую, я получаю рабочий результат:
<Image source = {base1.getIngredientImage()} />