I cannot find a good example that tackles this, I searched through google and find only the documentation in salesforce, although they suggest not to use it, i need this for my report, if you have a good working component that explains custom render(), afterRender(), rerender() and unRender() in a lightning component - i would love to study that. Thanks.
1 Answer
Generally, you don't use reRender, you simply use render. render accepts a single parameter, the elements that were already rendered, which you can then modify by attaching event handlers, customizing CSS, adding new elements, and so on.
I do actually have a demo of using a renderer, the lightning:progressRing component. The renderer enables an SVG and calculates the necessary path:
({
// Create SVG, path, populate with default values from controller
render: function(component, helper) {
var result = this.superRender(),
xmlns = "http://www.w3.org/2000/svg",
updateContainer = result[0].querySelector("#progressContainer"),
value = component.get("v.value"),
dValue = "M 1 0 A 1 1 0 "+Math.floor(value / 50)+" 1 "+
Math.cos(2 * Math.PI * value / 100)+" "+
Math.sin(2 * Math.PI * value / 100)+" L 0 0",
svg = document.createElementNS(xmlns,"svg"),
path = document.createElementNS(xmlns,"path");
svg.setAttributeNS(null,"viewBox", "-1 -1 2 2");
path.setAttributeNS(null, "class", "slds-progress-ring__path");
path.setAttributeNS(null, "d", dValue);
svg.appendChild(path);
updateContainer.appendChild(svg);
return result;
},
// Update the progress bar on a rerender event
rerender: function(component, helper) {
var value = component.get("v.value"),
dValue = "M 1 0 A 1 1 0 "+Math.floor(value / 50)+" 1 "+
Math.cos(2 * Math.PI * value / 100)+" "+
Math.sin(2 * Math.PI * value / 100)+" L 0 0",
svg = component.getElement().querySelector("svg"),
path = svg.childNodes[0];
this.superRerender();
path.setAttributeNS(null, "d", dValue);
}
})
Notice here, though, I use rerender to update the SVG, instead of just using the render event. It works really well, so this should give you something to play with.
-
Thank you so much! this would help a lot!. I am aware of not using that in my components though. But would love to study that part also and because it is needed on my presentation. Mar 31, 2018 at 1:19
-
@JayveeVillaceran The link in this answer has a complete copy-paste gist you can use to play with. Glad I could help you out.– sfdcfoxMar 31, 2018 at 1:22
-
1
-
hmm i tried it in my org, i cannot seem to follow what it does, do you have more basic example? Mar 31, 2018 at 2:22
-
@JayveeVillaceran Errr, no, that's about as basic as it gets. But, I'll see if I can write up a canvas render or something for you to follow along with. I'll write up something up this weekend for you.– sfdcfoxMar 31, 2018 at 2:27