Frontend frameworks often use the mental modal that a component (or entire UI) is the result of running state through a pure function. Dan Abromov shares his thoughts on the current state of React with server components.
UI = f(data)(state)
Here's how I interpret it: in the mental model we're used to, a component is a pure function that returns UI based on its props. In this case, a Greeter
is rendered on the client.
function Greeter(props) {
return <p>Hello, {props.name}!</p>;
}
Say we have a server component that know who needs to be greeted before the code hits the client. In that case, the name will come from data available on the server.
function Greeter(data) {
return function () {
return <p>Hello, {data.name}!</p>;
}
}
The outer function is executed on the server, the inner on the client.
The true power lies in mixing and matching the paradigms. Say you want to read a translation string on the server, and greet a name on the client.
function Greeter(data) {
return function (props) {
return <p>{data.translations.hello}, {props.name}!</p>;
}
}