Я хочу, чтобы компонент с функцией оповещения активировался при нажатии кнопки в компоненте класса.
import React from 'react'
export default function ConfirmationModal() {
alert = () => {
alert("whatsup hotdawg?")
}
return (
<div>
{this.alert()}
</div>
)
}
у меня есть эта строка, в которой я хотел бы вызвать метод оповещения в функциональном компоненте onClick
<button>"ClickMe" onClick=<ConfirmationModal/> </button>
Любые предложения о том, как я могу это сделать, будут высоко оценены.
Мои извинения, представьте, что у вас есть два компонента, и в одном из них у вас есть OnClick, который вызывает второй компонент. Второй компонент может отображать что угодно. Я просто не знаю, как это сделать.
Вы можете сохранить часть состояния в своем родительском компоненте, например, isModalOpen
, которому вы присваиваете значение true при нажатии на кнопку, и используйте этот фрагмент состояния для условного рендеринга ConfirmationModal
.
Также рекомендуется не вызывать методы непосредственно при рендеринге, так как это будет происходить при каждом рендеринге. Вместо этого вы можете переместить оповещение на componentDidMount
.
Пример
class ConfirmationModal extends React.Component {
componentDidMount() {
alert("whatsup hotdawg?");
}
render() {
return <div>Modal</div>;
}
}
class App extends React.Component {
state = {
isModalOpen: false
};
render() {
return (
<div>
<button onClick = {() => this.setState({ isModalOpen: true })}>
Click me
</button>
{this.state.isModalOpen && <ConfirmationModal />}
</div>
);
}
}
ReactDOM.render(<App />, document.getElementById("root"));
<script src = "https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src = "https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
<div id = "root"></div>
React - это библиотека на основе компонентов, поэтому добавьте свой компонент пользовательского интерфейса (кнопку) и связанную с ним логику в тот же компонент.
Измените свой функциональный компонент на следующий.
import React from 'react';
export default class ConfirmationModal extends React.Component {
alert = () => {
alert("whatsup hotdawg?")
}
render () {
return (
<button onClick = {this.alert}>"ClickMe"</button>
)
}
}
И в вашем компоненте класса импортируйте вышеуказанный компонент и используйте его. Ваш компонент класса должен выглядеть примерно так.
render(){
return (
<ConfirmationModal />
)
}
Я не уверен, что понимаю требования, можно подробнее?