make opts more flexible, can put ::key for determining a React key, also
add ::fn to transform the data before creating the pure node.