我有一条路线
<>
<Row>
<Table columns={columns} dataSource={this.state.dataSource} />
</Row>
<Row type="flex" gutter={10} style={{ marginBottom: 10 }}>
<Col>
<Typography>Name Auto Complete</Typography>
</Col>
<Col>
<AutoComplete
dataSource={data.map(person => person.name)}
onChange={nameSearch =>
this.setState({
dataSource: data.filter(person => person.name.includes(nameSearch))
})
}
allowClear
/>
</Col>
</Row>
<Row type="flex" gutter={10} style={{ marginBottom: 10 }}>
<Col>
<Typography>Name Search</Typography>
</Col>
<Col>
<Input.Search
allowClear
onSearch={nameSearch =>
this.setState({
dataSource: data.filter(person => person.name.includes(nameSearch))
})
}
/>
</Col>
</Row>
<Row type="flex" gutter={10}>
<Col>
<Typography>Auto Complete Search</Typography>
</Col>
<Col>
<AutoComplete dataSource={data.map(person => person.name)}>
<Input.Search
allowClear
onSearch={nameSearch =>
this.setState({
dataSource: data.filter(person =>
person.name.includes(nameSearch)
)
})
}
/>
</AutoComplete>
</Col>
</Row>
</>;
如果我将其保留在文件中间,则此后的所有路由均不起作用。
如果我将其保留在底部,则一切正常。
此外,如果我添加任何个人资料(如Profile),则可以。
Route::get('/{username}', 'ProfileController@profile')->name('profile.view');
如何解决这个问题?
答案 0 :(得分:1)
这就是应该使用通配符来匹配所有内容的方式。因此,要么将其放在文件的底部,它将用作后备路由,这意味着它上面没有任何内容应匹配,然后它将后退到该路由。或者,您可以使用正则表达式将用户名与其他方式匹配,从而使其不同于其他路由,例如:
Route::get('{username}', 'ProfileController@profile')
->name('profile.view')
->where('username', 'YOUR REGEX HERE');
我会选择您所展示的并且已经可以使用的那个
Route::get('profile/{username}', 'ProfileController@profile')
->name('profile.view');
// or
Route::get('user/{username}', 'ProfileController@profile')
->name('profile.view');