小编mag*_*agi的帖子

如何创建动态布局以响应完全可配置的 JSON 数据

我正在编写一个反应应用程序。核心要求是应用程序完全动态且可配置,包括选择布局、部分和字段、验证等。我有两个 UI。一个是配置 UI,用户可以在其中选择布局、部分、字段(例如 html 组件的类型等)。保存后,我将获取 JSON 数据,需要在其中绘制 UI。这是我的第二个用户界面。我关心的是如何构建组件以使用 JSON 数据呈现 UI。字段和部分将相同,但布局将根据配置 UI 中的选择而有所不同。下面是粗略的 JSON 架构。

{
  title: "Test title",
  layout: [
    {
      name: "layout-a"
    },
    sectionA: {
      name: "breadcrumbs"
      field: [
        {
          name: "test",
          value: "test",
          type: "text"
        }
      ]
    },
    sectionB: {
      name: "actions"
      field: [
        {
          name: "Create",
          value: "Create",
          type: "button"
        }
      ]
    }
  ]
}

Run Code Online (Sandbox Code Playgroud)

我正在考虑使用一个布局组件来渲染 JSON 中的所有子组件。组件如下所示

const Layout = ({ children }) => {
  return (
    <div>
      <div className="container">
        <div className="content">{children}</div>
      </div>
    </div>
  ); …
Run Code Online (Sandbox Code Playgroud)

layout reactjs

5
推荐指数
1
解决办法
2907
查看次数

如何使用反应钩子将数据从子组件传递到父组件

我有一个父组件和几个子组件。我需要根据 ErrorComponent 禁用或启用父级中的按钮。如果出现错误,则禁用该按钮,否则启用它。我相信我们可以将回调从子级传递给父级,并让父级知道并更新按钮属性。我需要知道如何使用反应钩子来做同样的事情?我尝试了几个例子但没有成功。错误组件上没有事件。如果出现错误(props.errorMessage),那么我需要将一些数据传递给父级,以便我可以禁用该按钮。非常感谢任何帮助

export const Parent: React.FC<Props> = (props) => {
....
const createContent = (): JSX.Element => {
  return (
    {<ErrorPanel message={props.errorMessage}/>}
    <AnotherComponent/>
  );
}
return (
<Button onClick={onSubmit} disabled={}>My Button</Button>
{createContent()}
);
};
export const ErrorPanel: React.FC<Props> = (props) => {
  if (props.message) {
    return (
        <div>{props.message}</div>
    );
  }
  return null;
};
Run Code Online (Sandbox Code Playgroud)

reactjs react-hooks

2
推荐指数
1
解决办法
5518
查看次数

如何将数据传递给 {props.children}

关于我的后续问题:如何使用反应挂钩将数据从子组件传递到父组件, 我还有另一个问题。下面是组件结构

export const Parent: React.FC<Props> = (props) => {
const [disabled, setDisabled] = React.useState(false);
const createContent = (): JSX.Element => {
  return (
    <Authorization>
    {<ErrorPanel message={errorMessage} setDisabled={setDisabled}/>}
    <MyChildComponent/>
    </<Authorization>
  );
}

return (
   <Button onClick={onSubmit} disabled={disabled}>My Button</Button>
   {createContent()}
 );
};

const Authorization: React.FC<Props> = (props) => {
const [disabled, setDisabled] = React.useState(false);
const render = (errorMessage : JSX.Element): JSX.Element => {
    return (
      <>
      {<ErrorPanel message={errorMessage} setDisabled={setDisabled}/>}
      </>
    );
  };

return (
    <>
    <PageLoader
      queryResult={apiQuery}
      renderPage={render}
    />
    {props.children} …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs react-hooks

0
推荐指数
1
解决办法
1万
查看次数

标签 统计

reactjs ×3

react-hooks ×2

javascript ×1

layout ×1