Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Custom tags #48

Closed
galdolber opened this issue Sep 17, 2014 · 14 comments
Closed

Custom tags #48

galdolber opened this issue Sep 17, 2014 · 14 comments

Comments

@galdolber
Copy link

When doing server side rendering, to use components you have to manually traverse the generated html and enhance the special nodes, as you cannot return a reference to a fn from the server.

Example:
(defn my-component [n]
[:span (str n)])

Returned from the server:
[:div [:my-component 3]]

From there I manually scan it and replace :my-component for the fn reference.

Something like this would solve the problem and avoid to scan:
(r/register-component! my-component :my-component)

@k2052
Copy link

k2052 commented May 6, 2015

+1 I could really use this! Important enough to me that I am tackling it myself but I have limited experience with CLJS and Reagent so it will take sometime.

k2052 added a commit to k2052/reagent that referenced this issue May 7, 2015
@k2052
Copy link

k2052 commented May 7, 2015

Not sure how idiomatic it is but I have a working solution in a custom-tags branch on my fork. k2052@9a6ab3b

Seems to not have broken anything (all tests still pass). Will make a PR as soon as I have some tests written and work out the most idiomatic API.

@yogthos
Copy link
Member

yogthos commented May 8, 2015

@k2052 any word on a pr? :)

@galdolber
Copy link
Author

This is an even bigger deal for react native. I'll prepare a PR

@yogthos
Copy link
Member

yogthos commented Oct 28, 2015

@galdolber 👍

@ghost
Copy link

ghost commented Feb 18, 2016

Is there any progress on this?
Is there something holding the integration of the MR back?

We also need to render hiccup that was generated elsewhere and it would help a lot.

@yogthos
Copy link
Member

yogthos commented Feb 18, 2016

@holmsand this seems like it would be a nice addition.

@Heliosmaster
Copy link

Yeah this would be pretty rad! 👍

@cwervo
Copy link

cwervo commented Aug 9, 2017

Any update on this PR?

@Deraen
Copy link
Member

Deraen commented Oct 20, 2017

I don't yet understand why this is needed.

First comment mentions server-side rendering, but in that case, the app would be rendered as string to HTML, which wouldn't refer the component functions? What use case there is for sending hiccup from server to client?

What about ReactNative? Obviously Reagent already works there, what would this improve on that environment?

I'd prefer not introducing new abstractions, especially one with global state (atom), without good reason.

@ghost
Copy link

ghost commented Nov 4, 2017

@Deraen
Let's say your server prepares some content that can be generated server side, like prepared info pages that are cached, or content from a CMS, and that content is supposed to contain some interactive elements,
then having the ability to just send data amd render that is much nicer than having to perform a clientside postprocessing step that walks the entire tree and replaces keyword with functions.

We currently do the latter and it is super messy :/

@awb99
Copy link

awb99 commented Mar 7, 2020

This feature would be very useful for me!

@Deraen
Copy link
Member

Deraen commented Mar 9, 2020

While I didn't mention this in Clojurist Together plans directly, I have some ideas on implementing this:

[As this affects how Reagent turns Hiccup to React elements and components,] I have some ideas on allowing users configure the Reagent Hiccup compiler, similar to what Hicada does. This would also allow introducing optional features which would break existing Reagent code, by making users opt-in to these. One case would be to make React component interop simpler.

This configuration will probably allow providing a function to convert keywords (or other values) to React elements, which will allow users to configure custom tags.

@Deraen
Copy link
Member

Deraen commented Jan 28, 2025

I think more recent #503 covers this issue also.

@Deraen Deraen closed this as completed Jan 28, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

7 participants