У меня есть следующий код, который доступен во всех элементах списка, и я хотел бы переключить свойство 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>
);
}





Вы можете где-нибудь использовать состояние для кнопки. Например:
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>
);
}
}
Какую библиотеку вы используете? На кнопке должно быть свойство clicked, которое вы можете использовать, если вы не заботитесь о сохранении состояния где-либо.
Это собственная базовая кнопка, я хочу переключать активную опору Icon при нажатии кнопки
Если у вас есть все элементы в списке, тогда в вашем состоянии должно быть что-то вроде statuses = [], а при рендеринге - <Icon active{this.state.status[key]) />.
Я думаю, вам нужно добавить больше кода, если вы хотите получить лучший ответ.
Спасибо, что отредактировал вопрос, сохраняет ли все состояния эффективными ??
Просто сохраните статус clicked на объекте data, который у вас уже есть в состоянии, и используйте его, чтобы указать, нажата кнопка или нет.
Извините, я не упомянул, но кнопка присутствует во всех элементах списка. Это похоже на ленту новостей, где и кнопка похожа на кнопку