Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.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
Node.js 如何在不刷新应用程序的情况下返回PUT请求的结果?_Node.js_Reactjs_Mongodb_Axios - Fatal编程技术网

Node.js 如何在不刷新应用程序的情况下返回PUT请求的结果?

Node.js 如何在不刷新应用程序的情况下返回PUT请求的结果?,node.js,reactjs,mongodb,axios,Node.js,Reactjs,Mongodb,Axios,我做了一个PUT请求来切换图像,但要查看结果,我必须刷新应用程序。。我怎么能不提神呢 守则: const Islbutton = props => { const [islIsOn, setIslIsOn] = useState(props.IslIsOn); const changeButtonStateIsl = () => { if (checkRole(role)) { axios .put("http://localhost:5

我做了一个PUT请求来切换图像,但要查看结果,我必须刷新应用程序。。我怎么能不提神呢

守则:

const Islbutton = props => {
  const [islIsOn, setIslIsOn] = useState(props.IslIsOn);

  const changeButtonStateIsl = () => {
    if (checkRole(role)) {
      axios
        .put("http://localhost:5000/api/bns/" + bnsName, {
          headers: {
            Accept: "application/json",
            "Content-Type": "application/json"
          },
          islIsOn: !islIsOn
        })

        .then(response => {
          console.log(response);
        })

        .catch(error => {
          console.log(error);
        })
        .finally(); // I assume it has to be here?
    }
  };

  return (
    <div>
      <img
        src={islIsOn ? islon : isloff}
        onClick={() => changeButtonStateIsl()}
      />
    </div>
  );
};


如果这是SQL,我会做如下操作:Select*,其中IslIsOn=value

看起来您只需更改状态即可触发重新渲染

.then(response => {
    // Set the state to true or false based on your response
    ...
    setIslIsOn(true);
 })

如果您想在PUT出错的情况下触发更改,那么您可以在finally部分设置状态。

您能将代码的相关部分发布到要将结果放入的位置吗?可能需要一个虚拟组件来解释您想要什么。视图和收件人之间是否存在竞争条件?否则,您可以在响应后执行此操作?不需要。finally if empty。@Joe是的,我知道,但我只是假设将从数据库返回数据的代码是there@Estradiaz我使用put requestsend数据发送到服务器,这已经很好地工作了,我所要做的就是获取数据现在收回更新的数据,以使其完美地工作该死。。你给了我这个主意。。我所要做的就是:.thenresponse=>{setIslIsOn!islIsOn;}谢谢!