Как установить свойства дочерних элементов кнопки при нажатии в React Native

У меня есть следующий код, который доступен во всех элементах списка, и я хотел бы переключить свойство Icon active при нажатии кнопки, предпочтительно с помощью метода someFunction (). Мне нужна помощь

import React from 'react';

экспортный класс QuestionsHelpers { имя пользователя = '';

constructor(username)
{
    this.username = username;
}


 static renderQuestionContent(questionData, props, stateHandler)
{
   /...///code
   let status = questionData.user_liked === "1";
   <Button transparent onPress = {()=>someFunction()}>
<Icon active = {status} name = "thumbs-up"/>
<Text>Vote</Text>

}

}

ниже я вызываю метод renderQuestion

questionList(props)
{
    return this.state.data.map(function (questionData, index)
        {
            return QuestionsHelpers.renderQuestionContent(questionData, props, null)
        }
    );
}

а затем все это внутри метода рендеринга

 render()
{
    let data = <View/>;
    if (this.state.data !== [])
    {
        data = this.questionList(this.props, null);
    }
    let spinner = this.state.loading === true?  (<Spinner color='#FF7F00'/>) : (<Button title='Load more' onPress = {()=>this.loadInitialState().done()}/>);
    return (
        <Content>

            {data}
            {spinner}
        </Content>
    );
}
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
0
0
36
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете где-нибудь использовать состояние для кнопки. Например:

class Doge extends React.Component { 
  state = {
    status: false,
  }

  render() {
    return (
      <Button transparent = {() => this.setState({ status: !this.state.status})>
        <Icon active = {this.state.status} name = "thumbs-up" />
        <Text>Vote</Text>
      </Button>
    );
  }
}

Извините, я не упомянул, но кнопка присутствует во всех элементах списка. Это похоже на ленту новостей, где и кнопка похожа на кнопку

daRula 22.04.2018 23:36

Какую библиотеку вы используете? На кнопке должно быть свойство clicked, которое вы можете использовать, если вы не заботитесь о сохранении состояния где-либо.

Colin Ricardo 22.04.2018 23:37

Это собственная базовая кнопка, я хочу переключать активную опору Icon при нажатии кнопки

daRula 22.04.2018 23:40

Если у вас есть все элементы в списке, тогда в вашем состоянии должно быть что-то вроде statuses = [], а при рендеринге - <Icon active{this.state.status[key]) />.

Colin Ricardo 22.04.2018 23:43

Я думаю, вам нужно добавить больше кода, если вы хотите получить лучший ответ.

Colin Ricardo 22.04.2018 23:44

Спасибо, что отредактировал вопрос, сохраняет ли все состояния эффективными ??

daRula 22.04.2018 23:56

Просто сохраните статус clicked на объекте data, который у вас уже есть в состоянии, и используйте его, чтобы указать, нажата кнопка или нет.

Colin Ricardo 23.04.2018 10:19

Другие вопросы по теме