【发布时间】:2019-12-05 02:40:52
【问题描述】:
我是 React.js 的新手,但我熟悉 JavaScript,我正在尝试构建一个表单,该表单可以使用存储在 JSON 数据文件中的用户信息自动完成字段。
我找到了允许我这样做的 react-autocomplete 库。我设法让它工作,我对整体的基本功能感到满意。现在我正在尝试微调行为,使其适合我的项目需求。
这是我如何让它工作的。我知道这可能不是最优雅的方式,但请记住,我最近几天才开始摆弄 React,大多数架构和协议对我来说仍然是超级新的。
JSON 用户数据数组如下所示(我存储了几个用户):
[{
"userid": "578",
"firstName": "Alfie",
"lastName": "Robles",
"username": "anekdamian",
"userLevel": "0",
"projects": ""
}]
userLevel 是一个从 0 到 5 的数值。
projects 是用户分配的项目数。
JSON 数据被导入到 userImport 变量中,然后馈送到 userDataArray 对象:
let userImport = require('../cache/users.json');
this.state = {
newProject: {
address: '',
city: '',
state: '',
zip: '',
contractor: '',
projectManager: '',
client: '',
status: []
},
statusOptions: ["Backlog", "Open", "In Progress", "Under Review"],
touched: {
address: false,
city: false,
state: false,
zip: false,
contractor: false,
projectManager: false,
client: false,
status: false
},
userDataArray: userImport
};
然后,Autocomplete 类将数据拉入items 属性:
<Autocomplete
name={"client"}
inputProps={{ placeholder:'Client'}}
getItemValue={item => item.userid}
items={this.state.userDataArray}
renderItem={(item, isHighlighted) =>
<div style={{ background: isHighlighted ? 'lightgray' : 'white' }}>
{item.firstName}{' '}{item.lastName}{' ('}{item.username}{')'}
</div>
}
value={this.state.value}
onChange={(event, value) => this.setState({ value })}
onSelect={value => this.setState({ value })}
/>{" "}
{/* Client of the Project*/}
到目前为止一切顺利!此实现正在运行。
这是实际效果:
现在,我想做的是创建一个条件语句,它只会自动完成 userLevel 低于 3 的用户。
我想知道如何执行这种类型的条件语句,以便我可以通过特定条件(项目数量、用户级别等)限制自动完成功能显示的建议
由于我是 React 新手,我还不确定你在哪里以及如何执行这种类型的条件语句。 我一直在查看 react-Autocomplete 库的示例以及我能找到的有关该主题的所有教程,但我还没有弄明白。
另一件事是,当一个建议的用户被选中时,输入的值被设置为userid,这正是我想要的。但是有没有办法让用户仍然显示全名呢?只是为了保持用户体验友好。
我需要为此创建一个隐藏输入吗?或者也许将 ID 值传递给 this.state 数组中的不同键,并使用友好版本保留自动完成键? ????
提前感谢您的帮助!
【问题讨论】:
标签: arrays json reactjs autocomplete conditional-statements