reactjs - 我正在尝试在 React.js 中制作一个按钮矩阵
问题描述
我正在尝试制作一个左侧按钮矩阵以及右侧按钮的反应。当我去渲染它不会渲染。我得到一个匿名函数,但我不知道匿名函数是什么。我尝试使用 NPM 的列依赖项。我不知道如何使用此依赖项是否有更简单的方法来执行此操作并清理我的代码?
import React from "react";
import ReactDOM from "react-dom";
import { ButtonThemes, ButtonTypes, ButtonSizes } from "./buttonTypes";
import { IconTypes } from "./iconTypes";
import Button from "./Button";
import "./styles.css";
**var Columns = require('react-columns');
function Component(){
var queries = [{
columns: 2,
query: 'min-width: 500px'
}, {
columns: 3,
query: 'min-width: 1000px'
}];
function App() {
return (
<React.Fragment>
<div className="App">
<Columns queries={queries}>
<Button
size={ButtonSizes.MEDIUM}
label="Button"
onClickHandler={() => alert("you clicked!")}
type={ButtonTypes.PRIMARY}
/>
<p>
this is a button
<p>
</Columns>
</div>
</React.Fragment>
);
}
}
const rootElement = document.getElementById("root");
ReactDOM.render(<App />, <Columns />, rootElement);
解决方案
ReactDOM.render
调用无效。请参阅 上的文档render
。移除Columns
组件。
签名:ReactDOM.render(element, container[, callback])
。
你的电话应该是:ReactDOM.render(<App/>,rootElement)
。
将导入更改为:
import React from "react";
import ReactDOM from "react-dom";
import { ButtonThemes, ButtonTypes, ButtonSizes } from "./buttonTypes";
import { IconTypes } from "./iconTypes";
import Button from "./Button";
import Columns from 'react-columns';
你render
要:
const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);
看起来你不需要两者Component
和App
。将其简化为:
function App(){
var queries = [{
columns: 2,
query: 'min-width: 500px'
}, {
columns: 3,
query: 'min-width: 1000px'
}];
return (
<React.Fragment>
<div className="App">
<Columns queries={queries}>
<Button
size={ButtonSizes.MEDIUM}
label="Button"
onClickHandler={() => alert("you clicked!")}
type={ButtonTypes.PRIMARY}
/>
<p>
this is a button
<p>
</Columns>
</div>
</React.Fragment>
);
}
要回答您的另一个问题,匿名函数是没有名称的函数。一个例子是你的onClickHandler
onClickHandler={() => alert("you clicked!")
. 你给它一个内联函数,它不存储在任何地方,而是在每次渲染时重新声明。
常规功能:
onClickHandler () => {
alert('you clicked')
}
...
<Button
size={ButtonSizes.MEDIUM}
label="Button"
onClickHandler={onClickHandler}
type={ButtonTypes.PRIMARY}
/>
就像你的匿名一样:
<Button
size={ButtonSizes.MEDIUM}
label="Button"
onClickHandler={() => alert("you clicked!")}
type={ButtonTypes.PRIMARY}
/>
以您拥有的方式使用它绝对没有错。这就是“匿名”功能的含义。
推荐阅读
- arrays - 从数组中删除字符 - Powershell
- angular - Angular-9 构建不包括 /assets 中的符号链接文件夹
- javascript - for 循环迭代和省略
- javascript - 如何根据 Node JS 发送的 JSON 数据在我的 HTML 页面上显示图表
- c++ - 在旧 C++98 中*安全*实现智能指针向量的最简单方法?
- powershell - 格式化Powershell脚本中2个日期时间变量之间的时间差
- c# - Xamarin Forms 绑定到嵌套属性不起作用
- python - 在 Python 中使用 Selenuim 选择元素的问题
- python - NumPy 中 exp(-x^2) 的快速傅里叶变换
- c++ - int8_t 中的位是如何排列的