admin管理员组文章数量:1279145
I'm following this tutorial on Medium for using a debounce with autocomplete in React. /@sankalpa115/usedebounce-hook-in-react-2c71f02ff8d8 But nothing is rendering and I'm receiving this error:
Failed to resolve import "UseDebounce" from "src/SearchComponent.jsx". Does the file exist?
I'm using node -v v23.7.0, npm -v 10.9.2 and Vite
I've tried adding <base href="./src">
to my index.html with no results.
main.js
import { StrictMode } from 'react'
import { createRoot } from 'react-dom/client'
import App from './App.jsx'
createRoot(document.getElementById('root')).render(
<StrictMode>
<App />
</StrictMode>,
)
App.js
import React from 'react';
import Button from '@mui/material/Button';
import FirstComponent from './FirstComponent';
import SearchComponent from './SearchComponent';
function App() {
return (
<>
<Button variant='contained'>Login</Button>
<SearchComponent />
</>
)
}
export default App
UseDebounce.jsx
import { useState, useEffect } from 'react';
function UseDebounce(value, delay) {
const [debouncedValue, setDebouncedValue] = useState(value);
useEffect(() => {
const handler = setTimeout(() => {
setDebouncedValue(value);
}, delay);
return () => {
clearTimeout(handler);
};
}, [value, delay]);
return debouncedValue;
}
export default UseDebounce;
SearchComponent.jsx
import React, { useState } from 'react';
import UseDebounce from 'UseDebounce';
function SearchComponent() {
const [searchTerm, setSearchTerm] = useState('');
const [searchResults, setSearchResults] = useState([]);
// Set delay time according to your needs
const debouncedSearchTerm = UseDebounce(searchTerm, 300);
useEffect(() => {
// Here you can trigger your search logic, like an API call
// For demonstration, let's just console log the debounced search term
console.log("Search triggered with term:", debouncedSearchTerm);
}, [debouncedSearchTerm]);
const handleInputChange = (event) => {
setSearchTerm(event.target.value);
};
return (
<div>
<input
type="text"
placeholder="Search..."
value={searchTerm}
onChange={handleInputChange}
/>
<ul>
{searchResults.map((result, index) => (
<li key={index}>{result}</li>
))}
</ul>
</div>
);
}
export default SearchComponent;
I'm following this tutorial on Medium for using a debounce with autocomplete in React. https://medium/@sankalpa115/usedebounce-hook-in-react-2c71f02ff8d8 But nothing is rendering and I'm receiving this error:
Failed to resolve import "UseDebounce" from "src/SearchComponent.jsx". Does the file exist?
I'm using node -v v23.7.0, npm -v 10.9.2 and Vite
I've tried adding <base href="./src">
to my index.html with no results.
main.js
import { StrictMode } from 'react'
import { createRoot } from 'react-dom/client'
import App from './App.jsx'
createRoot(document.getElementById('root')).render(
<StrictMode>
<App />
</StrictMode>,
)
App.js
import React from 'react';
import Button from '@mui/material/Button';
import FirstComponent from './FirstComponent';
import SearchComponent from './SearchComponent';
function App() {
return (
<>
<Button variant='contained'>Login</Button>
<SearchComponent />
</>
)
}
export default App
UseDebounce.jsx
import { useState, useEffect } from 'react';
function UseDebounce(value, delay) {
const [debouncedValue, setDebouncedValue] = useState(value);
useEffect(() => {
const handler = setTimeout(() => {
setDebouncedValue(value);
}, delay);
return () => {
clearTimeout(handler);
};
}, [value, delay]);
return debouncedValue;
}
export default UseDebounce;
SearchComponent.jsx
import React, { useState } from 'react';
import UseDebounce from 'UseDebounce';
function SearchComponent() {
const [searchTerm, setSearchTerm] = useState('');
const [searchResults, setSearchResults] = useState([]);
// Set delay time according to your needs
const debouncedSearchTerm = UseDebounce(searchTerm, 300);
useEffect(() => {
// Here you can trigger your search logic, like an API call
// For demonstration, let's just console log the debounced search term
console.log("Search triggered with term:", debouncedSearchTerm);
}, [debouncedSearchTerm]);
const handleInputChange = (event) => {
setSearchTerm(event.target.value);
};
return (
<div>
<input
type="text"
placeholder="Search..."
value={searchTerm}
onChange={handleInputChange}
/>
<ul>
{searchResults.map((result, index) => (
<li key={index}>{result}</li>
))}
</ul>
</div>
);
}
export default SearchComponent;
Share
Improve this question
edited Feb 23 at 20:43
LarryN
asked Feb 23 at 20:35
LarryNLarryN
3621 gold badge3 silver badges13 bronze badges
3
|
2 Answers
Reset to default 0I deleted both SerchComponent.jsx and UseBebounce.jsx then recreated them and I fot to import useEffect in SearchComponent.jsx. Now it's working.
The line "Failed to resolve import "UseDebounce" from src/SearchComponent.jsx. Does the file exist?" means that vite failed to find UseDebounce because it couldn't be found.
The most popular reason for this error is that you either wrote "UseDebounce.jsx" wrong, or that the file is not in the correct directory
本文标签:
版权声明:本文标题:javascript - Failed to resolve import "UseDebounce" from "srcSearchComponent.jsx". Does the 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1741302704a2371185.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
UseDebounce.jsx
in the same directory asSearchComponent.jsx
? Also consideruseDebounce
instead. That way you are following React’s rule of hooks to the letter. – Chukwujiobi Canon Commented Feb 23 at 20:39<base href="./src">
. That will only mess with Vite. Use relative URLs instead:import UseDebounce from './UseDebounce'
. – Chukwujiobi Canon Commented Feb 23 at 20:49