окно замены окна работает только один раз - PullRequest
0 голосов
/ 01 июня 2019

Это очень сложный термин для меня, потому что я запутался, как все происходит У меня есть приложение 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 раза. это действительно сбивает с толку меня, потому что я делаю этот трудный проект впервые. Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...