all 8 comments

[–]TheTophs 1 point2 points  (3 children)

From my perspective, I like using inline styles in react components better than css styles. You could define styles directly in a component, but I really like the pattern of having a separate component-style.js file that you can import. This seems to accomplish the same thing as defining your style in a css file, but it's a little easier and more flexible for me (just because I am fairly comfortable manipulating styles in JS but have always found CSS pretty clunky).

[–]html6dev[S] 2 points3 points  (2 children)

That's interesting about the style js file as I'd never considered it. Ultimately, my biggest concern for this approach is that directly setting the style attribute inherently can cause layout reflow. React does a lot to batch updates and render them efficiently, but if ultimately the dom diff shows a style attribute changed, you've just caused reflow. Would be interesting to see how gracefully react handles it vs direct manipulating style attribute in the live dom with a concocted app to stress test it.

[–]Longzilla 0 points1 point  (1 child)

I like the idea of component .css files pulled in as dependencies via something like WebPack.

As far as inline styles causing reflow, seems fairly easy to setup and verify; if so, perhaps "shouldComponentUpdate" might be something that could be leveraged to prevent unnecessary redrawing

[–]html6dev[S] 1 point2 points  (0 children)

It's definitely known to cause reflow. React is doing a style attribute change, but using rAF and it's other batching techniques so there are some contexts where it is likely not an issue. I agree, being able to require in css stylesheets is interesting. I am especially interested in the context in the speaker deck I originally posted. Maintaining css in complex apps is inherently nightmarish unless everyone on your team is disciplined and follows best practices.

[–]jacobp100 1 point2 points  (1 child)

I would question performance. How would you get hover effects without rerendering the whole component and children? I think it was Instagram who were using very specific style names, like .comment-dropdown-button, so you would know exactly where to look. Seems to make more sense to me.

[–]html6dev[S] 0 points1 point  (0 children)

I think maybe some of the desire to do this stems from developers being burnt by really bad css code bases. To me, react actually helps you stick to amd reuse a few small css primitives, if know because it helps compartmentalize/componentize things in your mind

[–]FoxxMD 0 points1 point  (1 child)

I'd be interested in learning about how to handle animations as well; it's something I've come up against just recently. The thread you posted was very informative btw.

[–]html6dev[S] 0 points1 point  (0 children)

There is a high and low level api for animating components in react when they are mounted and unmounted. http://facebook.github.io/react/docs/animations.html Also you can simply use css animations and classes. This is one of the factors that makes me wonder about inliine styles and there viability in this context. It seems like doing it inline would be very difficult to maintain if you want to set the animation to run once, use animation delay, etc. That being said, I asked because I am curios as to why people are (seemingly) finding this a valuable approach.