Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs React数据表搜索组件未按应有方式呈现/工作_Reactjs_Npm_Search_Datatable - Fatal编程技术网

Reactjs React数据表搜索组件未按应有方式呈现/工作

Reactjs React数据表搜索组件未按应有方式呈现/工作,reactjs,npm,search,datatable,Reactjs,Npm,Search,Datatable,我正在为一个项目使用一个名为react datatable的npm包,我正在尝试构建一种搜索数据的方法。我发现有人能够这样做的回购;然而,他的反应技巧比我高,我似乎无法让他的代码在我这边正常工作。我只是想知道为什么它没有在我的前端渲染任何东西。任何建议都会有帮助。多谢各位 他的代码: import React from 'react'; import styled from 'styled-components'; import { storiesOf } from '@storybook/re

我正在为一个项目使用一个名为react datatable的npm包,我正在尝试构建一种搜索数据的方法。我发现有人能够这样做的回购;然而,他的反应技巧比我高,我似乎无法让他的代码在我这边正常工作。我只是想知道为什么它没有在我的前端渲染任何东西。任何建议都会有帮助。多谢各位

他的代码:

import React from 'react';
import styled from 'styled-components';
import { storiesOf } from '@storybook/react';
import faker from 'faker';
import Button from '../shared/Button';
import DataTable from '../../../src/index';

const createUser = () => ({
  id: faker.random.uuid(),
  name: faker.name.findName(),
  email: faker.internet.email(),
  address: faker.address.streetAddress(),
  bio: faker.lorem.sentence(),
  image: faker.image.avatar(),
});

const createUsers = (numUsers = 5) =>
  new Array(numUsers).fill(undefined).map(createUser);

const fakeUsers = createUsers(2000);

const TextField = styled.input`
  height: 32px;
  width: 200px;
  border-radius: 3px;
  border-top-left-radius: 5px;
  border-bottom-left-radius: 5px;
  border-top-right-radius: 0;
  border-bottom-right-radius: 0;
  border: 1px solid #e5e5e5;
  padding: 0 32px 0 16px;

  &:hover {
    cursor: pointer;
  }
`;

const ClearButton = styled(Button)`
  border-top-left-radius: 0;
  border-bottom-left-radius: 0;
  border-top-right-radius: 5px;
  border-bottom-right-radius: 5px;
  height: 34px;
  width: 32px;
  text-align: center;
  display: flex;
  align-items: center;
  justify-content: center;
`;


const FilterComponent = ({ filterText, onFilter, onClear }) => (
  <>
    <TextField id="search" type="text" placeholder="Filter By Name" aria-label="Search Input" value={filterText} onChange={onFilter} />
    <ClearButton type="button" onClick={onClear}>X</ClearButton>
  </>
);

const columns = [
  {
    name: 'Name',
    selector: 'name',
    sortable: true,
  },
  {
    name: 'Email',
    selector: 'email',
    sortable: true,
  },
  {
    name: 'Address',
    selector: 'address',
    sortable: true,
  },
];

const BasicTable = () => {
  const [filterText, setFilterText] = React.useState('');
  const [resetPaginationToggle, setResetPaginationToggle] = React.useState(false);
  const filteredItems = fakeUsers.filter(item => item.name && item.name.toLowerCase().includes(filterText.toLowerCase()));

  const subHeaderComponentMemo = React.useMemo(() => {
    const handleClear = () => {
      if (filterText) {
        setResetPaginationToggle(!resetPaginationToggle);
        setFilterText('');
      }
    };

    return <FilterComponent onFilter={e => setFilterText(e.target.value)} onClear={handleClear} filterText={filterText} />;
  }, [filterText, resetPaginationToggle]);

  return (
    <DataTable
      title="Contact List"
      columns={columns}
      data={filteredItems}
      pagination
      paginationResetDefaultPage={resetPaginationToggle} // optionally, a hook to reset pagination to page 1
      subHeader
      subHeaderComponent={subHeaderComponentMemo}
      selectableRows
      persistTableHead
    />
  );
};

storiesOf('Filtering', module)
  .add('Example 1', () => <BasicTable />)
从“React”导入React;
从“样式化组件”导入样式化;
从'@storybook/react'导入{storiesOf};
从“冒牌货”进口冒牌货;
从“../shared/Button”导入按钮;
从“../../../src/index”导入数据表;
const createUser=()=>({
id:faker.random.uuid(),
名称:faker.name.findName(),
电子邮件:faker.internet.email(),
地址:faker.address.streetAddress(),
bio:faker.lorem.句子(),
image:faker.image.avatar(),
});
const createUsers=(numUsers=5)=>
新数组(numUsers).fill(未定义).map(createUser);
const fakeUsers=createUsers(2000);
const TextField=styled.input`
高度:32px;
宽度:200px;
边界半径:3px;
边框左上半径:5px;
边框左下半径:5px;
边框右上角半径:0;
边框右下半径:0;
边框:1px实心#e5;
填充:0 32px 0 16px;
&:悬停{
光标:指针;
}
`;
const ClearButton=样式化(按钮)`
边框左上半径:0;
边框左下半径:0;
边框右上角半径:5px;
边框右下半径:5px;
高度:34px;
宽度:32px;
文本对齐:居中;
显示器:flex;
对齐项目:居中;
证明内容:中心;
`;
常量筛选器组件=({filterText,onFilter,onClear})=>(
X
);
常量列=[
{
姓名:'姓名',
选择器:“名称”,
可排序:是的,
},
{
名称:'电子邮件',
选择器:“电子邮件”,
可排序:是的,
},
{
姓名:'地址',
选择器:'地址',
可排序:是的,
},
];
常量基本表=()=>{
常量[filterText,setFilterText]=React.useState(“”);
const[ResetPaginationGogle,SetResetPaginationGogle]=React.useState(false);
const filteredItems=fakeUsers.filter(item=>item.name&&item.name.toLowerCase().includes(filterText.toLowerCase());
const subHeaderComponentMemo=React.useMemo(()=>{
常量handleClear=()=>{
如果(过滤器文本){
SetResetPaginationGogle(!ResetPaginationGogle);
setFilterText(“”);
}
};
返回setFilterText(e.target.value)}onClear={handleClear}filterText={filterText}/>;
},[filterText,重置分页切换];
返回(
);
};
storiesOf('过滤',模块)
.add('示例1',()=>)
我的代码:

import React from 'react';
import NotesListHtml from './NoteListHtml'
import DataTable from 'react-data-table-component';


const FilterComponent = ( { filterText, onClear, onFilter }) => (
  <>
    <input id="search" type="text" placeholder="Filter By Name" aria-label="Search Input" value={filterText} onChange={onFilter} />
    <button type="button" onClick={onClear}>X</button>
  </>
)

const BasicTable = (props) => {
  let result = props.notes.map(function(el) {
    var o = Object.assign({}, el);
    o.fullName = `${props.data.first_name} ${props.data.last_name}`;
    return o;
  })
  

const ExpandableComponent = ({ data }) =>{
 return(<p style={{padding:'20px'}}>{data.contentBody}</p>)
}  
  const columns = [
    {
      name: 'Organization',
      selector: row => row.type[0].label || row.type,
      sortable: true,
      wrap:true
    },
    {
      name: 'Title',
      selector: 'title',
      sortable: true,
    },
      {
        name: 'Date',
        selector: row=>row.createdAt.split('T')[0],
        sortable: true,
      },
      {
        name: 'Author',
        selector: 'fullName',
        sortable: true,
      },
  ];

  const customStyles = {
    headCells: {
      style: {
          backgroundColor:'#f3f7f9',
      },
    },
    cells: {
      style: {
      color:'#79838b'
      },
    },
  };



  const [filterText, setFilterText] = React.useState('');
  const [resetPaginationToggle, setResetPaginationToggle] = React.useState(false);
  const filteredItems = props.notes.filter(item => item.type[0].label && item.type[0].label.toLowerCase().includes(filterText.toLowerCase()))


  const subHeaderComponentMemo = React.useMemo(() => {
    console.log('subheader')
    const handleClear = () => {
      console.log('hit1')
      if (filterText) {
        setResetPaginationToggle(!resetPaginationToggle);
        setFilterText('');
      }
    }
    console.log('beforereturn');
    return (
    <>
    {/* <input id="search" type="text" placeholder="Filter By Name" aria-label="Search Input" value={filterText} onChange={onFilter} /> */}
    <button type="button" onClick={handleClear}>X</button>
    </>
    )

  }, [filterText, resetPaginationToggle])



  return (
    <>
    <DataTable
      subHeaderComponent={subHeaderComponentMemo}
      className='table'
      columns={columns}
      data={filteredItems}
      pagination={true}
      highlightOnHover={true}
      pointerOnHover={true}
      expandableRows={true}
      expandOnRowClicked={true}
      expandableRowsComponent={<ExpandableComponent data={result} />}
      paginationResetDefaultPage={resetPaginationToggle} // optionally, a hook to reset pagination to page 1
      customStyles={customStyles}
      subHeader={false}

    />
    </>

  );
}

export default BasicTable;
从“React”导入React;
从“./NoteListHtml”导入NotesListHtml
从“反应数据表组件”导入数据表;
常量过滤器组件=({filterText,onClear,onFilter})=>(
X
)
常量基本表=(道具)=>{
让结果=props.notes.map(函数(el){
var o=Object.assign({},el);
o、 全名=`${props.data.first_name}${props.data.last_name}`;
返回o;
})
const ExpandableComponent=({data})=>{
返回(

{data.contentBody}

) } 常量列=[ { 名称:'组织', 选择器:row=>row.type[0]。标签| | row.type, 可排序:是的, 包装:对 }, { 姓名:'头衔', 选择器:“标题”, 可排序:是的, }, { 姓名:'日期', 选择器:row=>row.createdAt.split('T')[0], 可排序:是的, }, { 姓名:'作者', 选择器:“全名”, 可排序:是的, }, ]; 常量自定义样式={ 头细胞:{ 风格:{ 背景颜色:'#f3f7f9', }, }, 单元格:{ 风格:{ 颜色:“#79838b” }, }, }; 常量[filterText,setFilterText]=React.useState(“”); const[ResetPaginationGogle,SetResetPaginationGogle]=React.useState(false); const filteredItems=props.notes.filter(item=>item.type[0]。label&&item.type[0]。label.toLowerCase().includes(filterText.toLowerCase()) const subHeaderComponentMemo=React.useMemo(()=>{ 控制台日志('subheader') 常量handleClear=()=>{ console.log('hit1') 如果(过滤器文本){ SetResetPaginationGogle(!ResetPaginationGogle); setFilterText(“”); } } console.log(“返回前”); 返回( {/* */} X ) },[filterText,重置分页切换]) 返回( ); } 可导出默认值;

你能详细解释一下“为什么它没有在我的前端渲染任何东西”的意思吗。您还可以包括数据的外观吗?也许把它放在沙箱里?