Проблема в том, что вы обращаетесь к одному и тому же значению (this.state.changePlanet) 3 раза и ожидаете другого результата.Я думаю, вам просто нужно сделать метод return случайной планетой так:
getRandomPlanet = () => {
return this.state.newdiscoverPlanet[Math.floor(Math.random()*this.state.newdiscoverPlanet.length)];
}
, тогда вы можете вызвать это 3 раза, и вы получите 3 разных изображения:
_renderTabIndicator() {
let tabs = [{
text: `${this.state.tags.toLowerCase()}`,
iconSource: this.getRandomPlanet()
},{
text: `${this.state.tags2.toLowerCase()}`,
iconSource: this.getRandomPlanet()
},{
text: `${this.state.tags3.toLowerCase()}`,
iconSource: this.getRandomPlanet()
}];
return <PagerTabIndicator tabs={tabs} />;
}
Редактировать : Если вы хотите убедиться, что не выбраны две одинаковые планеты, вы можете сделать что-то вроде этого:
getRandomPlanets = (n) => {
// Shuffle array
const shuffled = this.state.newdiscoverPlanet.sort(() => 0.5 - Math.random());
// Get sub-array of first n elements after shuffled
let selected = shuffled.slice(0, n);
return selected;
}
и затем позвонить:
_renderTabIndicator() {
const planets = this.getRandomPlanets(3);
let tabs = [{
text: `${this.state.tags.toLowerCase()}`,
iconSource: planets[0]
},{
text: `${this.state.tags2.toLowerCase()}`,
iconSource: planets[1]
},{
text: `${this.state.tags3.toLowerCase()}`,
iconSource: planets[2]
}];
return <PagerTabIndicator tabs={tabs} />;
}