javascript - 'state' 未定义 no-undef
问题描述
我真的很陌生,但我只想为我在“输入”栏中输入的每个状态呈现“学院”组件。我收到上述错误。我过滤渲染部分是否错误?感谢您帮助新手:)
import College from './College';
const Home = (props) => {
const [colleges, setColleges] = useState([
{name: 'Princeton', price: 1100.00, img: Princeton, tag: 'princeton'},
{name: 'Stanford', price: 1100.00, img: Stanford, tag: 'stanford'},
{name: 'Brown', price: 1100.00, img: Brown, tag: 'brown'},
{name: 'Columbia', price: 1100.00, img: Columbia, tag: 'columbia'},
{name: 'Wake', price: 1100.00, img: Wake, tag: 'wake'},
{name: 'Ross', price: 1100.00, img: Ross, tag: 'ross'},
])
const [search, setSearch] = useState('')
const renderColleges = (colleges) => (colleges.map(colleges => <College {...colleges} />))
return (
<div>
<Row align="middle" className='title'>
<Input placeholder="Search for a school" onChange={(e) => setSearch(e.target.value)} value={search}/>
</Row>
<Row align="middle" className='container'>
{renderColleges(state.colleges.filter(search))}
</Row>
</div>
);
}
export default Home;
解决方案
当你使用类时,你有一个对象state
并且colleagues
显然会在其中。
但是当你使用 useState 钩子时,colleagues
它本身就是 state 属性并且setColleagues
是它的 setter (setState),你不需要写state.colleagues
,只需使用colleagues
.
所以你需要使用{renderColleges(colleges.filter(search))}
. 但是您在过滤方面也有问题。它应该是这样的。{renderColleges(state.colleges.filter(c => c.name.includes(search))}
推荐阅读
- c# - 在不同的网站中使用 Asp.Net 站点
- php - 在 laravel 刀片中的下拉选择事件中未打开模态
- python - aerich init-db 只创建一张表,但预计会创建多张表
- html - 谁能帮我理解为什么在“后缀”起作用时“前缀”不起作用以及如何解决这个问题?
- java - 将应用程序上传到 Playstore 后,Dynamodb 映射器查询失败
- node.js - Slack users.list api 在传递有效令牌时也会抛出 invalid_auth 错误
- c - 使用 mod_proxy_fcgi 和 nginx proxy_pass 编写应用服务器守护进程
- swift - 结合 map 和 switchToLatest 混淆
- visual-studio-code -
热键不适用于 Visual Studio Code - coldfusion - CFCHART 仅在 Y 轴上显示每隔一个标签