Remove a section that's 1. buggy and 2. controversial [skip ci] (#2265)
See discussion in #2250 and #1986 for more details.
This commit is contained in:
parent
0e6223da73
commit
b9c3c6c9c8
2 changed files with 1 additions and 31 deletions
|
|
@ -58,7 +58,7 @@
|
|||
- render/events: `Object.prototype` properties can no longer interfere with event listener calls.
|
||||
- render/events: Event handlers, when set to literally `undefined` (or any non-function), are now correctly removed.
|
||||
- render/hooks: fixed an ommission that caused `oninit` to be called unnecessarily in some cases [#1992](https://github.com/MithrilJS/mithril.js/issues/1992)
|
||||
- docs: tweaks: ([#2104](https://github.com/MithrilJS/mithril.js/pull/2104) [@mikeyb](https://github.com/mikeyb), [#2205](https://github.com/MithrilJS/mithril.js/pull/2205), [@cavemansspa](https://github.com/cavemansspa))
|
||||
- docs: tweaks: ([#2104](https://github.com/MithrilJS/mithril.js/pull/2104) [@mikeyb](https://github.com/mikeyb), [#2205](https://github.com/MithrilJS/mithril.js/pull/2205), [@cavemansspa](https://github.com/cavemansspa), [#2265](https://github.com/MithrilJS/mithril.js/pull/2265), [@isiahmeadows](https://github.com/isiahmeadows))
|
||||
- render/core: avoid touching `Object.prototype.__proto__` setter with `key: "__proto__"` in certain situations ([#2251](https://github.com/MithrilJS/mithril.js/pull/2251))
|
||||
|
||||
---
|
||||
|
|
|
|||
|
|
@ -363,36 +363,6 @@ This way, the `Auth` module is now the source of truth for auth-related state, a
|
|||
|
||||
As a bonus, notice that we no longer need to use `.bind` to keep a reference to the state for the component's event handlers.
|
||||
|
||||
#### Avoid restrictive interfaces
|
||||
|
||||
Try to keep component interfaces generic - using `attrs` and `children` directly - unless the component requires special logic to operate on input.
|
||||
|
||||
In the example below, the `button` configuration is severely limited: it does not support any events other than `onclick`, it's not styleable and it only accepts text as children (but not elements, fragments or trusted HTML).
|
||||
|
||||
```javascript
|
||||
// AVOID
|
||||
var RestrictiveComponent = {
|
||||
view: function(vnode) {
|
||||
return m("button", {onclick: vnode.attrs.onclick}, [
|
||||
"Click to " + vnode.attrs.text
|
||||
])
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
If the required attributes are equivalent to generic DOM attributes, it's preferable to allow passing through parameters to a component's root node.
|
||||
|
||||
```javascript
|
||||
// PREFER
|
||||
var FlexibleComponent = {
|
||||
view: function(vnode) {
|
||||
return m("button", vnode.attrs, [
|
||||
"Click to ", vnode.children
|
||||
])
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
#### Don't manipulate `children`
|
||||
|
||||
If a component is opinionated in how it applies attributes or children, you should switch to using custom attributes.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue