Search code examples
smalltalkpharoseaside

Modifying a component's state from another component


I'm trying to set the instance variable of a child component from it's parent component inside a callback. Using the debugger I can see that the instance variable is set correctly in the callback, but on rendering the child component, the child component does not reflect the changes made.

So, is it illegal to modify a component's state from another component in seaside or am I doing something else wrong?

Example code:

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

Solution

  • After a little experimenting, I found the problem. In one of the rendering methods, I was creating a new component each time the page was rendered instead of reusing the one created in the initialize method.

    That other component was used for navigation, where I set which main component was to be displayed based on the menu chosen.

    So apparently, modifying state is not illegal in Seaside.