我正在尝试从回调中的父组件设置子组件的实例变量。使用调试器我可以看到在回调中正确设置了实例变量,但在渲染子组件时,子组件并不反映所做的更改。
那么,从海边的另一个组件修改组件的状态是否违法,或者我做错了什么?
示例代码:
MyParentComponent>> initialize
super initialize.
child := MyChildComponent new.
MyParentComponent>> renderContentOn: html
html render: child.
html anchor
callback: [
child property: 'Something'.
] ; with 'Navigate'.
MyParentComponent>> children
^ Array with: child
答案 0 :(得分:4)
我猜错了父组件中的一些super initialize
。
我还建议你不要这样做。
使用
执行MyParentComponent>>child
^ child ifNil: [ child := MyChildComponent new ]
另外,不要html render: child
而是html render: self child
。
这样你就可以轻松交换组件。
这样你就可以确定孩子已经正确初始化了。
答案 1 :(得分:1)
经过一番实验,我发现了问题。在其中一种渲染方法中,我每次渲染页面时都会创建一个新组件,而不是重复使用initialize
方法中创建的组件。
其他组件用于导航,我根据所选菜单设置要显示的主要组件。
显然,修改国家在Seaside并非违法。