我是前端的新手,我在业余时间学习mithril.js,我认为这很棒。刚才我在读有关m.request()
的内容,但有些东西我没有得到。我在oninit
函数中放置了一个从服务器中获取一些数据的组件,以填充变量。 view
中使用了相同的变量来显示数据,但是一旦请求返回,就不会呈现数据。这是代码:
const m = require("mithril");
import Stuff from './stuff.js';
var WelcomePage = {
stufflist: [],
oninit: function(vnode) {
m.request({
method: "GET",
url: "wfd/stuff",
data: {offset:0, limit:5}
}).then((result) => {
WelcomePage.stufflist = result;
});
},
view: function(vnode) {
return (
<div>
Welcome! Have your stuff :)
<ul>
{
WelcomePage.stufflist.map(stuff => (
<li>
<Stuff stuff = {stuff}></Stuff>
</li>
))
}
</ul>
</div>
);
}
}
export default WelcomePage;
当然,请求以预期的内容结尾,并且Stuff
组件可以正常工作。我想念什么?
更新:我忘了提到此秘银页面位于我配置的反向代理之后。就我离开代理服务器而言,该页面有效,因此可能存在错误。这是我的dockerized nginx:alpine
default.conf
文件:
server {
listen 80;
server_name stuff.dev;
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
location /wfd {
proxy_pass http://localhost:8080/;
}
}
答案 0 :(得分:1)
由于您可能只想更新组件的一个实例,而不是
@media(max-height: 1100px) and (min-width: 1200px)
您可能想要
WelcomePage.stufflist = result;
然后在您看来使用
vnode.state.stufflist = result;
注意:只要不使用箭头功能,就可以使用vnode.state.stufflist.map(...)
的{{1}} istead。
答案 1 :(得分:0)
..问题是WelcomePage
组件已在主.js
文件中呈现。与mithril.js
文档states一样,如果您希望组件从auto-redraw
系统中受益,则必须安装它。因此,安装我的WelcomePage
解决了我的“问题”。