在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/數(shù)據(jù)庫  HTML/ koa2 的 ctx.state ctx.body 有什么區(qū)別???

koa2 的 ctx.state ctx.body 有什么區(qū)別???

下面有什么區(qū)別嗎?

controllers

async function get (ctx, next) {
    const res = await models.test.get()
    
    ctx.state.data = res.data
    /******* 或者 ********/
    ctx.body = res.data
    
    await next()
}
module.exports = {
    get
}

routes

router.get('/', controllers.test.get, async (ctx, next) => {
    await ctx.render('test', {
        list: ctx.state.data.obj,
        /******* 或者 ********/
        list: ctx.body.obj,
    })
})
回答
編輯回答
夏木
The recommended namespace for passing information through middleware and to your frontend views.

body和原來一樣沒變過,只說說state。
為什么會(huì)有state,因?yàn)槲覀儠?huì)有到很多中間件用于存儲(chǔ)某些昨天,比如登陸或者權(quán)限驗(yàn)證,在此之前,我們會(huì)報(bào)錯(cuò)到ctx的一個(gè)自定義屬性上比如ctx.locals.isLogin,但是我們總是要寫類似這樣的代碼

app.use(async ctx => {
    ctx.locals = ctx.locals || {};
});

現(xiàn)在官方提供了ctx.state用于報(bào)錯(cuò)中間件的狀態(tài)數(shù)據(jù)。

2017年12月14日 15:37
編輯回答
舊城人

state是用來給中間件保存數(shù)據(jù)的,而body是最終的輸出

2018年4月7日 08:34