1
React Routerを実装して、テーブル行をクリックするたびに検索結果の表を別のProfileコンポーネントにリンクします(各行はユーザー/顧客)。 Link
でテーブルを書式設定しようとすると悪夢的なので、各テーブル行のonClick
ハンドラ内でbrowserHistory.push()
を使用しています。ルータがテーブル行からbrowserHistoryにパラメータを渡す
問題:クリックした一意の行に基づいてプロファイルをレンダリングする必要があります。browserHistory
にパラメータを渡してみました。コンポーネントが見つからないか、または/tools/customer-lookup/profile
を訪問しただけです。
EDIT:
<Provider store={Store}>
<Router history={browserHistory}>
<Route path="/tools/customer-lookup" component={CustomerLookupApp} />
<Route path="/tools/customer-lookup/profile/:id" component={CustomerProfile} />
</Router>
</Provider>
表の行::(browserHistory.push()
に渡される{ id }
なし)
constructor(props) {
super(props);
this.pushToUrl = this.pushToUrl.bind(this);
this.state = {
selectedRow: []
};
};
render() {
let tableData = this.props.data.map(customer => {
return (
<tr onClick={this.pushToUrl(`/tools/customer-lookup/profile/${customer.address}`)} id="customer-data-row">
<td>{customer.firstname}</td>
<td>{customer.lastname}</td>
<td>{customer.birthdate}</td>
<td>{customer.city}</td>
<td>{customer.state}</td>
<td>{customer.address}</td>
</tr>
);
});
pushToUrl(url) {
console.log(url);
}
その後、browserHistory.push()
ルータセットアップを呼び出すハンドラ関数を追加して更新しました
tr
onClick
ハンドラが表示されますデータの行ごとに1回呼び出されることになり、ゼロになります。ここでonClick
からのハンドラのconsole.logsです:
お客様の
数千人のユーザーのためのすべての一意のプロファイルURLを訪問しようとしたので、ちょうど私のブラウザがクラッシュしました。(つまり、 ... – Jose
謝罪します。これを変更して、URLをクリックしたときに実行される関数に渡すハンドラがあるようにします。私は例を投稿します –
答えて
あなたはこれらの線に沿って何かを行うことができます。ナビゲートしようとするURLを渡します。
出典
2016-10-20 19:26:16
運がよろしいですが、まだブラウザがクラッシュしています。これは興味深いことです。テーブル行がクリックされたときではなく、 'browserHistory'がページ読み込み時に呼び出されているかのようなものです。私はなぜそれができたのかの兆候は見えません。 – Jose
うーん、それは奇妙です。私はhashHistoryで試してみたところ、うまくいきました。したがって、browserHistory.push()をメソッドに移動しても、まだ実行されていますか?あなたのコードは今どのように見えますか? –
はい。これは、テーブルのレンダリング時に 'onClick'ハンドラが設定されているかのようです。私は 'browserHistory'メソッドをconsole.logに置き換えました。私は画像を投稿します。 – Jose
関連する問題