我目前正在使用“react-scroll”库,并使用了方法activeClass =“toggle-menu__active”和spy = {true}。其背后的目的是在单击我的项目时应用“toggle-menu__active”类中的 CSS 样式。但是,我注意到它没有按预期运行。有些项目在单击时不会激活。
<nav
class={`toggle-menu ${
isNavOpen ? "toggle-menu__open" : "toggle-menu__close"
}`}
>
{/* <div className="toggle-menu__logo">the company logo</div> */}
<ul className="toggle-menu__list">
{navLinks.map((link, index) => (
<li key={index}>
{/* Use the Link component from react-scroll */}
<Link
activeClass="toggle-menu__active"
spy={true}
to={link.text.toLowerCase()} // This should match the element's ID you want to scroll to
smooth={true} // Enable smooth scrolling
duration={500} // Duration of the scrolling animation
scrollSpy={true}
className={`toggle-menu__link `}
>
<LinkItem
text={link.text}
icon={link.icon}
iconClassName="icon-nav"
/>
</Link>
</li>
))}
</ul>
</nav>
您不应该将任何生命周期相关的组件(例如片段)传递到视图模型中,因为它们可能会导致内存泄漏。
要在旋转时保留
EditText
中的文本,请将 EditText
的文本作为字符串存储在视图模型中。您应该相应地更新和使用它,以确保即使在方向更改后也能保留最新的文本。示例:
视图模型
class UserViewModel: ViewModel() {
var editTextContent:String = ""
}
碎片
class MainFragment : Fragment() {
private val mUserViewModel: UserViewModel by viewModels()// could initialize via kotlin delegated property
override fun onCreate(savedInstanceState: Bundle?){
super.onCreate(savedInstanceState)
with(mUserViewModel.editTextContent){
if(isNotEmpty()){
editText.text = text
}
else{
text = editText.text
}
editText.doAfterTextChanged{editable-> if(editable!=null) text = editable.toString()}
}
我认为这个codelab可能对你有帮助。