2016-01-22 6 views
0

Я получил свое приложение React Native с некоторыми различными видами.Загрузите тот же компонент с разными данными, нажав кнопку

То, что я хочу достичь, это «пойти» или «загрузить» один и тот же компонент, но передавать разные данные.

Я использую React Native Simple router для изменения между видами.

Я попытаюсь объяснить это на примере.

Я получил viewA.js:

... 

var viewB = require('./viewB'); 

... 

goToViewB: function(id){ 
    this.props.toRoute({ 
     name: "View B", 
     component: viewB, 
     passProps: { id: id }, 
    }); 
    }, 

... 

<TouchableHighlight onPress={ this.goToViewB.bind(this, 10) } underlayColor="transparent"> 
    <Text>Go to View B</Text> 
</TouchableHighlight> 

... 

И это на viewB.js

... 

var viewB = require('./viewB'); 

... 

goToViewB: function(id){ 
    this.props.toRoute({ 
     name: "View B", 
     component: viewB, 
     passProps: { id: id }, 
    }); 
    }, 

... 

<TouchableHighlight onPress={ this.goToViewB.bind(this, 20) } underlayColor="transparent"> 
    <Text>Go to View B with different data</Text> 
</TouchableHighlight> 

... 

Я надеюсь, что этот пример объяснить это лучше.

Я иду viewA ->viewB ->viewB (загрузка различных данных) ->viewB (загрузка различных данных) ....

Я довольно новое с React Native , поэтому, если вы, ребята, предложите другой подход, все будет в порядке.

Спасибо :)

ответ

1

Если вы хотите, чтобы перезагрузить данные в View б без перезагрузки маршрут, вы можете сделать это следующим образом:

viewB.js

getInitialState() { 
    return { 
     data: '' 
    } 
}, 

componentWillMount() { 
    this.setState({ 
    data: this.props.id 
    }) 
}, 

changeData(data) { 
    this.setState({ 
    data: data 
    }) 
}, 

<TouchableHighlight onPress={() => this.changeData('70') } underlayColor="transparent"> 
    <Text>{ this.state.data }</Text> 
</TouchableHighlight> 

Как вы можете видеть, когда компонент монтируется, он устанавливает данные реквизита в состоянии. Таким образом, когда вам нужно изменить данные, вы вызываете this.setState() для сброса данных.

+0

Спасибо, человек! Я думаю, что я в порядке с вашим решением, но, просто чтобы знать, вы думаете, что есть какой-то способ достичь того, что я сказал? Переходить к одному компоненту, но передавать разные данные. Спасибо. –

+0

Как вы относитесь к тому же компоненту? Вы хотите перезагрузить компонент? Если да, хотите ли вы его мерцать или какой эффект вы хотите показать, компонент перезагружен? –

+0

Например, как я уже сказал, я использую React Native Simple router для навигации между компонентами в моем приложении. Когда я загружаю другой компонент, появляется эффект «салфетки». Мне бы хотелось что-то вроде этого. Это потому, что я хотел «загрузить» один и тот же компонент, но с разными данными, чтобы получить эти эффекты. Спасибо. –

Смежные вопросы