Поскольку вышеупомянутые экспортированные функции не являются компонентами, this.props всегда будет недоступен.Если вы хотите, вы можете создать дополнительный аргумент, чтобы принимать this.props
в функции, а затем предоставлять this.props
каждый раз, когда вы вызываете функции.
По сути, вам нужно написать компонент, который послевызывается для рендеринга, запускает функцию выборки.В качестве компонента вы можете воспользоваться функцией withRouter
из react-router
или react-router-dom
.Затем используйте:
export default withRouter(component-name)
Итак, каждый раз, когда вызывается этот компонент, this.props.history
становится доступным, как и другие реквизиты.Вы также можете передать любые другие реквизиты тегу JSX.
Вот как это должно выглядеть:
class TryComponent extends Component {
myFetchFunction() {
//this.props.history is available
//call request, get, delete... function here and pass props
}
render() {
// call here or call from the constructor
this.myFetchFunction();
return <AnyJSX></AnyJSX>;
}
}
export default withRouter(TryComponent);
Поэтому, когда вы пишете <TryComponent foo="bar" />
, foo доступен как реквизити история также доступна в качестве реквизита.