Я хочу создать HO C, у которого есть триггер события при нажатии определенной клавиши. Когда эта клавиша нажата, она должна предоставить событие родительскому компоненту. В этом случае ключ «@».
Дочерний HO C
import React, { Component } from 'react';
const withMention = WrappedComponent => {
return class extends Component {
state = {
mentionStart: false,
textInput: '',
selection: 0,
};
handleOnKeyPress = key => {
if (key === '@') {
this.setState({ mentionStart: true });
}
};
render() {
const { onMentionStart } = this.state;
return (
<WrappedComponent
onChangeText={text => {
this.setState({ textInput: text });
}}
onKeyPress={event => this.handleOnKeyPress(event.nativeEvent.key)}
onSelectionChange={event =>
this.setState({ selection: event.nativeEvent.selection })
}
onMentionStart={onMentionStart}
{...this.props}
/>
);
}
};
};
export default withMention;
Родительский компонент
const UserComment = withMention(TextInput);
<UserComment onMentionStart={(event) => console.log(event)} />
Я знаю, что реализация неверна, потому что всякий раз, когда я назначаю функцию для свойства onMentionStart дочернего компонента в parent, функция потомка переопределяется родительским. В этом случае, как создать пользовательский триггер события из дочернего компонента и передать в него событие, чтобы родитель мог использовать его соответствующим образом?