File tree Expand file tree Collapse file tree 1 file changed +27
-2
lines changed Expand file tree Collapse file tree 1 file changed +27
-2
lines changed Original file line number Diff line number Diff line change @@ -12,11 +12,36 @@ Nui::Observed<int> number{0};
1212
1313const auto ui = div{}(
1414 observe(str, number),
15- // This function is recalled and regenerates its respective elements,
15+ // This function is recalled and regenerates its respective elements,
1616 // when 'str' or 'number' changes.
17- [ &str, &number] ( ) {
17+ [ &str, &number] ( ) -> Nui::ElementRenderer {
1818 const auto result = * str + std::to_string(* number);
1919 return span{}(result);
2020 }
2121)
22+ ```
23+
24+ ## shared_ptr of Observed
25+
26+ Sometimes Observed may expire while the element affected by it is still part of the DOM.
27+ Nui can use weak_ptrs to avoid dangling pointers to expired Observed.
28+ ```cpp
29+ #include <nui/frontend.hpp>
30+
31+ /*...*/
32+
33+ std::shared_ptr<Nui::Observed<std::string>> str = std::make_shared<Nui::Observed<std::string>>("test");
34+
35+ const auto ui = div{}(
36+ observe(str),
37+ // This function is recalled and regenerates its respective elements,
38+ // when 'str' changes. Unless str is expired.
39+ [weak = std::weak_ptr{str}]() -> Nui::ElementRenderer {
40+ if (auto str = weak.lock(); str)
41+ {
42+ return span{}(str->value());
43+ }
44+ return Nui::nil();
45+ }
46+ )
2247```
You can’t perform that action at this time.
0 commit comments