Вызов невозвратной JSX-функции внутри render () в React - PullRequest
0 голосов
/ 23 января 2019

Я получил быстрый вопрос о вызове функции внутри метода рендеринга или о каком-либо потенциальном способе обновления метода, когда пользователь решает перейти на следующий экран, нажав «Отправить».

Моя цель -чтобы изменить старый созданный «selectedExchange» на обновленный «selectedExchange», когда пользователь нажимает стрелку «Отправить», чтобы перейти к следующему экрану.

// On Send Functionality
onSend = () => {
   const { exchanges } = this.props

   // Testing to see if hard coded values get sought out response
   // Hard code values work
   // this.props.selectExchange updates the selectedExchange
   this.props.selectExchange(exchanges.exchanges[0])

   this.props.navigation.navigate('selectRecipient', { transition: 'slideToLeft' })
   //return ( exchange )
}

// Additional helper method, able to replace the above "this.props.selectExchange()"
// if necessary
updateExchange = (value, exchange) =>  {
   this.props.selectExchange(exchange)
   this.setState({ selectedDisplayName: value })

// Render call
render() {
   const { navigation, account, exchanges } = this.props
   const { selectedExchange } = exchanges
   const { status, symbolPriceTicker, dayChangeTicker } = selectedExchange
   const loading = status === 'pending' && !symbolPriceTicker && !dayChangeTicker
   const avatar = account.profile_img_url ? { uri: account.profile_img_url } : IMAGES.AVATAR

   return (
     <View style={globalStyles.ROOT}>
       <Loading loading={loading} />
       <Image style={globalStyles.backgroundImg} source={IMAGES.BACKGROUND} />
       <TopArea navigation={navigation} avatar={avatar} />
       <ScrollView>
         {
           exchanges.exchanges.length > 0 &&
           exchanges.exchanges.map(exchange => (
             <View style={screenStyles.container}>
               <ServiceInfo
                 account={account}
                 balances={exchange.balances}
                 displayName={exchange.label}
                 symbolPriceTicker={symbolPriceTicker}
                 // onRequest={this.onRequest}
                 onSend={this.onSend}
               />
               ...
               ...

Что я пробовал:

  1. Передача объекта обмена через "onSend = {this.onSend (exchange)}", чтобы посмотреть, смогу ли я передать необходимый объект, который будет использоваться для обновления selectedExchange.Это не сработало, так как требовало от меня вернуть что-то из onSend.

  2. Непосредственный вызов вспомогательного метода в JSX между различными представлениями.Также не работал, как это требовалось, я возвратил некоторую форму JSX.

Не уверен, как еще я мог бы заняться этим.Спасибо за любую помощь!

...