#reactjs #react-router #parameter-passing #react-props #prop
#reactjs #react-маршрутизатор #передача параметров #react-props #prop
Вопрос:
В DisplayVisit component
я отобразил данные:
<div>
{(this.state.allVisit.length > 0) ? this.state.allVisit.map(data => {
return (
<div key={data.id} className="card-header mb-2" style={{ background: "#F0F3F7" }}>
<div className="form-group">
<label><b>VisitName:</b> {data.dataContext.VisitName} amp;nbsp;</label>
</div>
<div className="form-group">
<Link to={`/visit/${data.id}`} className="btn btn-secondary btn-sm" >
<i className="fas fa-arrow-circle-right" /> Details
</Link>
</div>
</div>
)
}) : (
<div className="card-header p-3 mb-2 text-black">
<label><b>Empty</b></label>
</div>
)
}
</div>
Когда сведения о клике пользователя перемещаются к следующему компоненту VisitDetails
— это работает.
App.js
<Route exact path="/visit/:id" component={VisitDetails}/>
Затем я хочу иметь доступ к id
и data.dataContext
:
class VisitDetails extends Component {
render() {
const { id } = this.props;
const { data.dataContext } = this.props;
//or const {data} = this.prop
return (
<div>
{id}, {data.dataContext.VisitName}
</div>
)
}
}
но я делаю что-то не так. Я просто учусь и пытаюсь разработать первое приложение.
Ответ №1:
В вашем компоненте DetailVisit :
<Link to={{ pathname: `/visit/${data.id}`, state: { data: data.dataContext.VisitName} }} className="btn btn-secondary btn-sm">
<i className="fas fa-arrow-circle-right" /> Details
</Link>
В вашем VisitDetails.js :
class VisitDetails extends Component {
render() {
const { id } = this.props.match.params;
const { data } = this.props.location.state;
return (
<div>
{id}, {data}
</div>
)
}
}
Комментарии:
1. Я отредактировал свой ответ, пожалуйста, попробуйте и скажите мне, есть ли ошибки
2. идентификатор в порядке, но данных нет:
Cannot destructure property 'data' of 'this.props.location.state' as it is undefined.
3. Мне пришлось перезапустить, и теперь все в порядке. Но можно ли передать все мои
data.dataContext
данные?4. да, вам просто нужно поместить это
state: { data: data.dataContext } }}