Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从ReactJS组件调用LaravelAPI路由?_Reactjs_Laravel_Api_Fetch - Fatal编程技术网

如何从ReactJS组件调用LaravelAPI路由?

如何从ReactJS组件调用LaravelAPI路由?,reactjs,laravel,api,fetch,Reactjs,Laravel,Api,Fetch,我有一个用Laravel5.7开发的API,它与客户端相连,客户端是用ReactJS开发的 我有一个显示餐厅列表的页面,每个餐厅项目后面都有一个删除按钮 所以我想当我点击这个按钮时,餐厅将被删除,换句话说,组件调用LaravelAPI的路由,该路由调用控制器中的方法来销毁这个项目 这是调用delete方法的API路由 Route::delete('/post/{id}','PostController@destroy'); 我尝试了这个尝试,但没有任何改变: class RestaurantCa

我有一个用Laravel5.7开发的API,它与客户端相连,客户端是用ReactJS开发的

我有一个显示餐厅列表的页面,每个餐厅项目后面都有一个删除按钮

所以我想当我点击这个按钮时,餐厅将被删除,换句话说,组件调用LaravelAPI的路由,该路由调用控制器中的方法来销毁这个项目

这是调用delete方法的API路由

Route::delete('/post/{id}','PostController@destroy');

我尝试了这个尝试,但没有任何改变:

class RestaurantCard extends Component {
  constructor(props) {
    super(props)
    this.state = {
      redirect: false,
    }
  }

  deleteRestaurant(restaurantId) {
    fetch('http://myAPI.com/version/public/post/' + restaurantId, {
      method: 'DELETE',
      header: {
        'Accept': 'application/json',
        'content-Type': 'application/json'
      }
    });

  }
render ()
 {
//...
<button onClick={() => this.deleteRestaurant(this.props.id)}>Delete</button>
}
}
类RestaurantCard扩展组件{
建造师(道具){
超级(道具)
此.state={
重定向:false,
}
}
餐厅(餐厅){
取('http://myAPI.com/version/public/post/"餐厅,{
方法:“删除”,
标题:{
“接受”:“应用程序/json”,
“内容类型”:“应用程序/json”
}
});
}
渲染()
{
//...
this.deleteRestaurant(this.props.id)}>Delete
}
}
最后,当我打开控制台时,它会显示以下错误:

删除500(内部服务器错误)

CORS策略已阻止从源“”获取“”的访问:请求的资源上不存在“访问控制允许源”标头。如果不透明响应满足您的需要,请将请求的模式设置为“no cors”,以获取禁用cors的资源

未捕获(承诺中)TypeError:无法获取

PS:我是ReactJs框架的初学者

在您编辑的问题提供错误后,此答案无效。您的错误是由于CORS造成的


您需要使用
then
子句在成功时提供操作。否则,您也可以使用
async/await
等待响应。更多信息:。

在bootstrap/app.php中添加以下行:

header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: *');
header('Access-Control-Allow-Headers: *');

控制台中是否有错误?是的,控制台中显示了多个错误。但问题中的错误已添加,请检查。请尝试在标题前添加
模式:'no cors',
。解决方案是什么?