This tutorial is a basic presentation of the Vue js render function.


Render Function is an alternative to string templates, allowing you to make the Vue component dynamic and pass arguments and values from parent component to resulted HTML structure.
Let's see an example and understand how render function works.

- In the following example we create a Vue component (named "comp_test") which can render an HTML element with dynamic tag-name, color, font-size and id.
<div id = 'demo'>
 <comp_test :elm_type="'h1,#0000ee,30,title'">Freedom is Free</comp_test>
 <comp_test :elm_type="'h3,#00ce00,25,h3tag'">To have peace I give peace.</comp_test>
 <comp_test :elm_type="'p,#ee0000,24,ptag'">The thought precedes perception.</comp_test>
 <comp_test :elm_type="'div,#1234fb,24,divtag'">Peace of mind, health of the body.</comp_test>
</div>
<script>
Vue.component('comp_test',{
 render : function(createElement){
 //gets an array of values from the string added to elm_type attribute
 var a = this.elm_type.split(',');

 //creates and returns the DOM element with data from elm_type, and defined in the attrs object-parameter
 return createElement(a[0],{
 attrs:{
 style:'color:'+a[1]+';font-size:'+a[2]+'px;',
 id:a[3]
 }
 },
 this.$slots.default //To use the text added in component
 )
 },

 //defines the prop required in each <comp_test> as a string
 props:{
 elm_type:{
 attributes: String,
 required: true
 }
 }
});

var vm = new Vue({
 el: '#demo'
});
</script>
As you can see, each <comp_test> tag binds a :elm_type prop which is defined in props property in Vue component.
The elm_type attribute must contains a string with data for the HTML element we want to obtain ('tag-name, color, font-size, id').
In the render function we get an array of values from the string added in "elm_type" attribute.
var a = this.elm_type.split(',');

Render function receives a createElement method as the argument and returns it.
createElement creates the DOM element with data from elm_type (defined in the attrs object).
The content added in the resulted HTML element is the text from each <comp_test>, due to the following argument:
this.$slots.default

- Results:

Freedom is Free

To have peace I give peace.

The thought precedes perception.

Peace of mind, health of the body.

For details about the createElement method from render function see the Vue documentation: createElement Arguments.

Daily Test with Code Example

HTML
CSS
JavaScript
PHP-MySQL
Which attribute is used in <a> tag for the address of the link?
src href rel
<a href="http://coursesweb.net/" title="CoursesWeb.net">CoursesWeb.net</a>
Which CSS property sets the type of the text font?
font-family text-decoration font-size
h2 {
  font-family:"Calibri",sans-serif;
}
What instruction selects all the <div> tags with class="cls"?
querySelector("div.cls") getElementsByTagName("div") querySelectorAll("div.cls")
var elm_list = document.querySelectorAll("div.cls");
var nr_elms = elm_list.length;       // number of selected items
alert(nr_elms);
Indicate the function that can be used to get the sum of values in an array.
array_sum() array_diff() array_shift()
$arr =[1, 2, 3, 4);
$arr_sum = array_sum($arr);
echo $arr_sum;       // 10
Render Function

Last accessed pages

  1. Add Text in Canvas from Input text field, as it is Typed (6534)
  2. PHP OOP - Constructor Method (4916)
  3. Insert, Select and Update NULL value in MySQL (48219)
  4. Contact page - CoursesWeb (34218)
  5. Tabs effect with CSS (34868)

Popular pages this month

  1. Making DIV Contents Scroll Horizontally, with multiple Div`s inside (2756)
  2. Contact page - CoursesWeb (2663)
  3. Tabs effect with CSS (2659)
  4. Courses Web: PHP-MySQL JavaScript Node.js Ajax HTML CSS (867)
  5. Insert, Select and Update NULL value in MySQL (749)