Я новичок в реагировании и хотел бы передать аргумент по ссылке. Я знаю, что могу сделать это, используя состояние, и я так и сделал.
<td>
<Link to = {{pathname:"user/"+id, state:{user_url:item.url} }} >{item.name}</Link>
</td>
Это перенаправит на мой компонент user_detail,
export default class User_Details extends React.Component {
constructor(props){
super(props);
this.state = {
error : null,
isloading: true,
user_detail : null,
user_url : null
};
if (this.props.location.state){
this.state.user_url =this.props.location.state.user_url
}
}
Пользователь может получить доступ к этому компоненту user_detail по ссылке перенаправления или просто по URL-адресу, если он попадет туда по ссылке перенаправления, то мне не нужно получать user_url из, потому что он сохраняется в состоянии. Однако, если пользователь использует ссылку, у которой нет состояния, мне сначала нужно получить ссылку.
Это работает, однако я продолжаю получать предупреждение об ошибке, если использую ссылку перенаправления:
index.js:1446 Warning: Can't perform a React state update on an unmounted component. This is a no-op, but it indicates a memory leak in your application. To fix, cancel all subscriptions and asynchronous tasks in the componentWillUnmount method. in User (created by Context.Consumer)
Как бы я смог решить эту проблему?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы не можете манипулировать состоянием таким образом, я бы посоветовал вам использовать setState в componentDidMount вот так
componentDidMount() {
if (this.props.location.state){
this.setState({
user_url: this.props.location.state.user_url
});
}
}
как сказал пользователь Rishabh Rawat, мне пришлось использовать функцию componentDidMount, здесь я сделал асинхронный вызов, но вместо установки состояния с помощью функции setstate, если был передан аргумент user_link, я сделал this.state.user_link = this.prop .location.state.user_link. Не SetState, потому что это иногда задерживается, что вызывает некоторые сбои.
Вы никогда не должны изменять состояние напрямую, как это, setState - это асинхронная функция, если есть некоторые сбои, возможно, вам следует предоставить некоторые проверки для вашего приложения, которые вызывают сбои.
спасибо за отзыв, я не знал о функциях componentDidMount и обновлении в ответ, я сделал это в функции рендеринга, которая неверна и продолжает рендеринг.