#javascript #reactjs
Вопрос:
Родительский компонент выглядит следующим образом
import React, { useState } from "react";
import EntityDefinition from "./EntityDefinition";
export default function EntitySelection(props) {
const testFun = () => {
console.log("Function activated");
};
return (
<>
<div>
<EntityDefinition
testFun={testFun}
/>{/**Calling a Class based Component*/}
</div>
</>
);
}
Компонент на основе классов (Дочерний)
import React from "react";
import { ComboBox, DropdownOption, Button } from "react-widgets";
import axios from "axios";
export default class EntityDefinition extends React.Component {
render() {
return (
<React.Fragment>
<div>
{" "}
<Button onClick={this.testFun}>Close</Button>{" "} {/*/Calling the function passed*/}
</div>
</React.Fragment>
);
}
}
но когда я нажал на кнопку testFun
, функция не вызывается.
я попробовал что-то вроде onClick={this.state.testFun}
: onClick={testFun}
но ничего не происходит.
может кто-нибудь указать, что я здесь делаю не так.
Комментарии:
1. В качестве примечания. Я не вижу никаких веских причин для преобразования функционального компонента в компонент, основанный на классе. Обычно все происходит наоборот
Ответ №1:
testFun
это реквизит. Так что используйте this.props.testFun
onClick={this.props.testFun}
Ответ №2:
testFun
является реквизитом, и вы используете компонент класса ES6, и он получает реквизит в качестве объекта реквизита, поэтому вы можете попробовать получить к нему доступ, как показано ниже
onClick={this.props.testFun}
Ответ №3:
Вам необходимо ссылаться на реквизиты, переданные компонентам на основе классов, используя this.props из компонентов на основе классов: Документы
В вашем случае вам следует изменить прослушиватель onClick на этот:
<Button onClick={this.props.testFun}>