Это очень сложный термин для меня, потому что я запутался, как все происходит У меня есть приложение React & Express, куда вы можете загружать данные, и при загрузке оно перенаправит вас на другую страницу, где отображаются ваши данные, но проблема в том, что оно перенаправляет вас только один раз, и когда вы возвращаетесь на главную страницу и пытаетесь загрузить файл второй раз не загружается и происходит сбой всего приложения
вот файл recipe.js (его часть) (реагирует)
axios({
method: 'post',
url: '/api/recipes',
config: {headers: {'Content-Type': 'multipart/form-data' }},
data: data
})
.then(res => {
window.location.replace(res.data.location)
})
.catch(err => {
if(err.response){
if(err.response.data.redirect === true){
window.location.replace(err.response.data.location)
}
if(err.response.data.message){
alert(err.response.data.message)
}
}
});
recipe.js (часть) (expressjs)
const recipe = await Dish.create({
author: user.username,
name: name,
//properties and values
})
return res.status(200).send({
location: '/recipe/' + recipe.name + '/' + recipe._id
})
view-recipe.js (экспресс (часть))
componentDidMount(){
const { match: { params } } = this.props;
console.log(`/api/recipe/${params.dishName}/${params.id}`)
axios.get(`/api/recipe/${params.dishName}/${params.id}`)
.then(res => res.data)
.then(data =>{
console.log(data)
}).catch(err=>{
if(err.response.data.message){
alert(err.response.data.message)
}
})
}
view-recipe.js (экспресс)
router.get('/:dishName/:id', async (req, res) => {
try {
const name = req.params.dishName;
const id = req.params.id;
console.log('name ' + name + ' id ' + id)
const recipe = await Dish.findOne({
name: name,
_id: id
}).lean();
if (!recipe) {
return res.status(404).send({
message: 'recipe not found'
})
}
return res.status(200).send({
recipe
})
} catch (err) {
return res.status(500).send({
message: err.message
})
}
})
и наконец
index.js (экспресс, для где определяется защита, истек ли токен проверки jwt или нет, и конфигурации маршрутов)
router.use('/api/recipes', guardr, require('./recipe'))
router.use('/api/recipe', require('./view-recipe'))
Что не так с этим кодом? Кстати, до window.location.replace()
в файле recipe.js (клиент) у меня вместо этого было window.location.href
, и это работало 2 раза. это действительно сбивает с толку меня, потому что я делаю этот трудный проект впервые. Спасибо!