Я пытаюсь отобразить страницу печати с помощью React Router.Итак, у меня есть два компонента:
export default class PurchaseOrder extends React.Component{
....
render(){
const {orderDate, client} = this.state.order;
//omitted for brevity
return(
<BrowserRoute>
<Button
component={Link}
to="/order/print"
target="_blank"
>
Print
</Button>
<Route
path="/order/print"
render={props => (
<OrderPrint
{...props}
orderDate={orderDate}
client={client}
/>
)}
/>
</BrowserRoute>
}
}
И OrderPrint:
export default function OrderPrint(props) {
return (
<div>props.orderDate</div>
<div>props.client.name</div>
);
}
Как вы видите, я пытаюсь представить печатную версию заказа на покупку одним щелчком мыши.кнопка.Компонент OrderPrint отображается, но отображается прямо под кнопкой.Я мог бы поместить Route в свой корневой компонент, которым является App, таким образом, убедившись, что я получаю только содержимое компонента OrderPrint, отображаемого так:
class App extends Component {
render() {
return (
<div className="App">
<Router>
<Route exact path="/" component={PurchaseOrder} />
<Route exact path="/order/print" component={OrderPrint} />
</Router>
</div>
);
}
}
Но вв этом случае я не смогу передать ему необходимые реквизиты.Таким образом, в данном конкретном случае, как заменить все содержимое страницы содержимым компонента OrderPrint и при этом иметь возможность передавать в него необходимые входные данные?
Обновление
Как упомянуто в комментариях @Akalanka Weerasooriya, я мог бы сохранить все состояние в компоненте приложения.Но одна вещь помешала мне сделать это: это означает, что мне практически всегда придется использовать опору render
компонента Route вместо опоры component
.Хорошо, это не проблема, но если это путь, то почему документация React Router почти всегда использует шаблон
<Route path="/about" component={About} />
в качестве стандартного способа его использования?Напомним, что если я пойду по пути Единого Истины и сохраню все свое состояние в одном месте, то не значит ли это, что я всегда буду использовать
<Route path="/about" render={props=>(<div>props.someProp</div>)} />
Я не говорю, что естьпроблема с этим, он просто упоминает об этом в документации только после того, как шаблон component={SomeComponent}
смущает меня.