Javascript mithriljs组件状态未更新为回调或承诺

Javascript mithriljs组件状态未更新为回调或承诺,javascript,mithril.js,Javascript,Mithril.js,我使用mithriljs组件状态如下: const Dashboard = () => { let ExpenseAmount = 0; let IncomeAmount = 0; let UserFullname = ''; const getExpense = () => { ExpenseAmount = 1000; }; const getIncome = () => { IncomeA

我使用mithriljs组件状态如下:

const Dashboard = () => {
    let ExpenseAmount = 0;
    let IncomeAmount = 0;
    let UserFullname = '';

    const getExpense = () => {
        ExpenseAmount = 1000;
    };

    const getIncome = () => {
        IncomeAmount = 2000;
    };

    const getUserFullname = () => {
        setTimeout(() => {
            console.log('calling fullname');
            UserFullname = 'Mike'; //<----
        }, 1000);
    }

    getUserFullname();

    return {
        view: () => [
            m("div", { class: "container-fluid flex-grow-1 container-p-y" }, [
                m(
                    "h4",
                    {
                        class:
                            "media align-items-center font-weight-bold py-3 mb-4"
                    },
                    [
                        m("img", {
                            src: "assets/img/avatars/1.png",
                            class: "ui-w-50 rounded-circle"
                        }),
                        m("div", { class: "media-body ml-3" }, [
                            m("span", `Welcome back, ${UserFullname}!`),
                            m(
                                "div",
                                { class: "text-muted text-tiny mt-1" },
                                m(
                                    "small",
                                    { class: "font-weight-normal" },
                                    `Today is ${new Date().toDateString()}`
                                )
                            )
                        ])
                    ]
                )
            ])
        ]
    };
};
const仪表板=()=>{
假设费用金额=0;
设IncomeAmount=0;
让UserFullname='';
const getExpense=()=>{
费用金额=1000;
};
const getIncome=()=>{
IncomeAmount=2000;
};
const getUserFullname=()=>{
设置超时(()=>{
log('calling fullname');
UserFullname='Mike';//[
m(“div”{class:“容器流体flex-grow-1容器-p-y”}[
m(
“h4”,
{
类别:
“媒体对齐项目中心字体粗体py-3 mb-4”
},
[
m(“img”{
src:“assets/img/avatars/1.png”,
类别:“ui-w-50圆形”
}),
m(“div”,{class:“媒体体ml-3}[
m(“span”,“欢迎回来,${UserFullname}!`),
m(
“div”,
{class:“文本静音文本小mt-1”},
m(
“小”,
{class:“字体重量正常”},
`今天是${new Date().toDateString()}`
)
)
])
]
)
])
]
};
};
我希望我可以调用和
ajax
函数,并且它的回调/承诺将更新
UserFullname
。 但它不起作用。我试着用setTimeout简化它,但仍然不起作用

如何解决ajax调用、priomise或setTimeout中的更新状态

一旦数据发生更改,就要感谢Mithril,因此您需要在函数体的
getUserFullname
末尾调用它

您目前拥有:

const getUserFullname = () => {
  setTimeout(() => {
    UserFullname = 'Mike';
  }, 1000);
}
你应该写:

const getUserFullname = () => {
  setTimeout(() => {
    UserFullname = 'Mike';

    m.redraw();
  }, 1000);
}