I have a form, where I need to show the status below the form. When I submit the form, depending on axios post success and failure I show the status. As of today I am able to show the error status as below enter image description here

我想要什么,当提交是成功的,我想显示如下状态.

enter image description here

我有以下代码.

//State
const [stats, setStatus] = useState(null);

//axios post
        try {
            const res = await axios.post('/exec/addcontroller', 
                {user, name, ipaddr, port, sshuser, sshpass, sshport, license},
                {headers: {
                    'Content-Type': 'application/json',
                    'Authorization': token,
                }}
            ).then( function (res) {
                if(res.status === 200) {
                    //success
                } else {
                    setStatus("Error");
                }
            });
        }catch(err) {
            setStatus(err.response.data.message);
        }

//form code goes here

//status div
{status && <div id="error">{status}</div>}

而css看起来如下所示

#error {
  color: #FF0040;
  border: 1px solid #F7819F;
  padding: 5px;
  background-color: #F8E0E6;
}

所以我在成功 case 中需要的是,我想在深绿色字母中显示状态,并将背景显示为浅绿色.怎么做到那样的react 方式呢?

推荐答案

您需要向您的状态添加更多信息(或使用多个状态变量),以不仅指示消息,还指示错误状态.

使用具有typemessage属性的对象try 类似的操作

setStatus(null);
try {
  const data = { user, name, ipaddr, port, sshuser, sshpass, sshport, license };
  const res = await axios.post('/exec/addcontroller', data, {
    headers: {
      Authorization: token,
    },
  });
  setStatus({
    type: 'success',
    message: `Controller ${name} added successfully`,
  });
} catch (err) {
  setStatus({
    type: 'error',
    message: err.response?.data.message ?? 'An error occurred',
  });
}

然后把它渲染成这样

{status && <div className={`alert ${status.type}`}>{status.message}</div>}

您可以使用id而不是className,但我觉得这里的css类更有意义.

.alert {
  border: 1px solid;
  padding: 5px;
}

.alert.error {
  color: #ff0040;
  background-color: #f8e0e6;
  border-color: #f7819f;
}

.alert.success {
  color: darkgreen;
  border-color: darkgreen;
  background-color: lightgreen;
}

请注意,我从请求中删除了Content-Type标头.在这种情况下,这是完全多余的.

Javascript相关问答推荐

如何通过onClick为一组按钮分配功能;

成帧器运动中的运动组件为何以收件箱开始?

根据总价格对航班优惠数组进行排序并检索前五个结果- Angular HTTP请求

自定义高图中的x轴标签序列

使用Java脚本根据按下的按钮更改S文本

使用GraphQL查询Uniswap的ETH价格

如何将多维数组插入到另一个多维数组中?

如何在.NET Core中将chtml文件链接到Java脚本文件?

如何 for each 输入动态设置输入变更值

将对象推送到数组会导致复制

从逗号和破折号分隔的给定字符串中查找所有有效的星期几

使每个<;li>;元素的 colored颜色 与随机生成的 colored颜色 列表不同(不重复

对具有相似属性的对象数组进行分组,并使用串连的值获得结果

如何更改Html元素S的 colored颜色 ,然后将其褪色为原始 colored颜色

如何根据查询结果重新排列日期

如何通过Axios在GraphQL查询中发送数组

JAVASCRIPT SWITCH CASE语句:当表达式为';ALL';

本地损坏的Java脚本

在JS/TS中构造RSA公钥

在Reaction Native中,ScrolltoIndex在结束时不一致地返回到索引0